Kentucky's Network Implementation Topology Tool

This tool, KNITT version 20160525, allows you to better manage the physical layout and connections of a network. It is particularly effective in optimizing physical layout of networks involving switches and other components spread across multiple racks. For more information see the KNITT homepage: http://aggregate.org/KNITT

Begin by specifying the logical connection pattern of the network (e.g., 0: 1 2 means s0 is connected to n1 and n2):

Next, define your physical racks (e.g., [sn0n] defines a rack with switch, n0, and another node):

How many seconds to search for a good layout (0 means use initial pattern)?

Switch Cable Color & Stripes Switch Cable Color & Stripes Switch Cable Color & Stripes Switch Cable Color & Stripes
s0: s8: s16: s24:
s1: s9: s17: s25:
s2: s10: s18: s26:
s3: s11: s19: s27:
s4: s12: s20: s28:
s5: s13: s21: s29:
s6: s14: s22: s30:
s7: s15: s23: s31:


Rack Placement Results

There were 302 rack crossings remaining of 384 total wires (78.645833%).

The following rack placement specification can be edited and used as input to this form, thus allowing incremental changes. That is also how you can re-render with different color choices for cabling.

[s0 s1 s2 s3 n0 n15 n16 n31 n32 n47 n48 n63 n64 n79 n80 n95 n96 n111 n112 n120 n121 n122 n123 n124 n125 n126]
[s4 s5 s6 s7 n1 n2 n3 n4 n5 n6 n7 n8 n9 n10 n11 n12 n13 n14 n23 n24 n40 n56 n72 n88 n104 n127]
[s8 s9 s10 s11 n18 n26 n33 n34 n35 n37 n39 n42 n43 n44 n45 n55 n71 n87 n103 n113 n114 n115 n116 n117 n118 n119]
[s12 s13 s14 s15 n21 n29 n46 n50 n53 n58 n61 n66 n69 n74 n77 n81 n82 n83 n84 n85 n86 n89 n90 n92 n98 n106]
[s16 s s s n17 n19 n20 n22 n25 n41 n49 n57 n65 n67 n68 n70 n73 n75 n76 n78 n93 n94 n97 n101 n105 n109]
[s s s s n27 n28 n30 n36 n38 n51 n52 n54 n59 n60 n62 n91 n99 n100 n102 n107 n108 n110 n n n n]


Graphical Representation

The following SVG diagram shows the arrangement of objects on racks and the links between them. It was rendered using dot.



netmap


node0

s0

s1

s2

s3

n0

n15

n16

n31

n32

n47

n48

n63

n64

n79

n80

n95

n96

n111

n112

n120

n121

n122

n123

n124

n125

n126


node1

s4

s5

s6

s7

n1

n2

n3

n4

n5

n6

n7

n8

n9

n10

n11

n12

n13

n14

n23

n24

n40

n56

n72

n88

n104

n127


node0:n64->node1:s5



node0:n16->node1:s6



node0:n96->node1:s7



node0:n121->node1:s5



node0:n123->node1:s7



node0:n124->node1:s6



node0:n125->node1:s4



node2

s8

s9

s10

s11

n18

n26

n33

n34

n35

n37

n39

n42

n43

n44

n45

n55

n71

n87

n103

n113

n114

n115

n116

n117

n118

n119


node0:n48->node2:s8



node0:n48->node2:s9



node0:n63->node2:s9



node0:n64->node2:s11



node0:n79->node2:s10



node0:n79->node2:s11



node0:n80->node2:s11



node0:n95->node2:s11



node0:n126->node2:s8



node0:n32->node2:s9



node0:n32->node2:s10



node0:n47->node2:s9



node0:n47->node2:s10



node3

s12

s13

s14

s15

n21

n29

n46

n50

n53

n58

n61

n66

n69

n74

n77

n81

n82

n83

n84

n85

n86

n89

n90

n92

n98

n106


node0:n15->node3:s13



node0:n63->node3:s15



node0:n80->node3:s12



node0:n95->node3:s12



node0:n96->node3:s14



node0:n111->node3:s13



node0:n111->node3:s14



node0:n112->node3:s14



node0:n16->node3:s13



node0:n31->node3:s12



node0:n31->node3:s13



node4

s16

s

s

s

n17

n19

n20

n22

n25

n41

n49

n57

n65

n67

n68

n70

n73

n75

n76

n78

n93

n94

n97

n101

n105

n109


node0:n0->node4:s16



node1:n1->node0:s1



node1:n2->node0:s1



node1:n2->node0:s3



node1:n3->node0:s1



node1:n4->node0:s1



node1:n5->node0:s1



node1:n6->node0:s1



node1:n7->node0:s1



node1:n7->node0:s2



node1:n8->node0:s1



node1:n9->node0:s1



node1:n10->node0:s1



node1:n10->node0:s3



node1:n11->node0:s1



node1:n12->node0:s1



node1:n13->node0:s1



node1:n14->node0:s1



node1:n23->node0:s2



node1:n24->node0:s1



node1:n40->node0:s1



node1:n56->node0:s1



node1:n72->node0:s1



node1:n88->node0:s1



node1:n104->node0:s1



node1:n127->node0:s0



node1:n127->node0:s2



node1:n2->node2:s10



node1:n6->node2:s8



node1:n14->node2:s8



node1:n40->node2:s9



node1:n40->node2:s10



node1:n56->node2:s8



node1:n56->node2:s9



node1:n72->node2:s10



node1:n72->node2:s11



node1:n88->node2:s11



node1:n5->node3:s12



node1:n7->node3:s13



node1:n8->node3:s13



node1:n23->node3:s13



node1:n24->node3:s12



node1:n24->node3:s13



node1:n88->node3:s12



node1:n104->node3:s14



node1:n127->node3:s15



node1:n1->node4:s16



node1:n3->node4:s16



node1:n4->node4:s16



node1:n6->node4:s16



node1:n8->node4:s16



node1:n9->node4:s16



node1:n10->node4:s16



node1:n11->node4:s16



node1:n12->node4:s16



node1:n13->node4:s16



node1:n14->node4:s16



node2:n37->node0:s3



node2:n39->node0:s2



node2:n42->node0:s3



node2:n43->node0:s3



node2:n44->node0:s3



node2:n45->node0:s3



node2:n55->node0:s2



node2:n71->node0:s2



node2:n87->node0:s2



node2:n103->node0:s2



node2:n113->node0:s2



node2:n114->node0:s2



node2:n114->node0:s3



node2:n115->node0:s2



node2:n116->node0:s2



node2:n117->node0:s2



node2:n118->node0:s2



node2:n119->node0:s2



node2:n18->node0:s3



node2:n26->node0:s3



node2:n33->node0:s3



node2:n34->node0:s3



node2:n35->node0:s3



node2:n37->node1:s4



node2:n43->node1:s7



node2:n44->node1:s6



node2:n45->node1:s4



node2:n103->node1:s7



node2:n113->node1:s5



node2:n115->node1:s7



node2:n116->node1:s6



node2:n117->node1:s4



node2:n18->node1:s6



node2:n33->node1:s5



node2:n35->node1:s7



node2:n87->node3:s12



node2:n103->node3:s14



node2:n113->node3:s15



node2:n114->node3:s15



node2:n115->node3:s15



node2:n116->node3:s15



node2:n117->node3:s14



node2:n118->node3:s15



node2:n119->node3:s14



node2:n119->node3:s15



node2:n18->node3:s13



node2:n26->node3:s12



node2:n26->node3:s13



node2:n42->node4:s16



node2:n34->node4:s16



node3:n46->node0:s3



node3:n50->node0:s3



node3:n58->node0:s3



node3:n66->node0:s3



node3:n74->node0:s3



node3:n82->node0:s3



node3:n90->node0:s3



node3:n98->node0:s3



node3:n106->node0:s3



node3:n21->node1:s4



node3:n29->node1:s4



node3:n53->node1:s4



node3:n61->node1:s4



node3:n69->node1:s4



node3:n77->node1:s4



node3:n81->node1:s4



node3:n81->node1:s5



node3:n83->node1:s4



node3:n83->node1:s7



node3:n84->node1:s4



node3:n84->node1:s6



node3:n85->node1:s4



node3:n86->node1:s4



node3:n89->node1:s4



node3:n89->node1:s5



node3:n92->node1:s4



node3:n92->node1:s6



node3:n98->node1:s7



node3:n46->node2:s8



node3:n46->node2:s10



node3:n50->node2:s8



node3:n50->node2:s9



node3:n53->node2:s8



node3:n53->node2:s9



node3:n58->node2:s9



node3:n61->node2:s9



node3:n66->node2:s11



node3:n69->node2:s10



node3:n69->node2:s11



node3:n74->node2:s10



node3:n74->node2:s11



node3:n77->node2:s11



node3:n82->node2:s11



node3:n86->node2:s8



node3:n90->node2:s11



node4:n17->node1:s5



node4:n19->node1:s6



node4:n19->node1:s7



node4:n20->node1:s6



node4:n22->node1:s6



node4:n25->node1:s5



node4:n41->node1:s5



node4:n49->node1:s5



node4:n57->node1:s5



node4:n65->node1:s5



node4:n67->node1:s5



node4:n67->node1:s7



node4:n68->node1:s5



node4:n68->node1:s6



node4:n70->node1:s5



node4:n73->node1:s5



node4:n75->node1:s5



node4:n75->node1:s7



node4:n76->node1:s5



node4:n76->node1:s6



node4:n78->node1:s5



node4:n93->node1:s4



node4:n94->node1:s4



node4:n97->node1:s5



node4:n101->node1:s4



node4:n105->node1:s5



node4:n109->node1:s4



node4:n109->node1:s7



node4:n22->node2:s8



node4:n41->node2:s9



node4:n41->node2:s10



node4:n49->node2:s9



node4:n57->node2:s9



node4:n65->node2:s11



node4:n67->node2:s11



node4:n68->node2:s11



node4:n70->node2:s8



node4:n70->node2:s11



node4:n73->node2:s10



node4:n75->node2:s11



node4:n76->node2:s11



node4:n78->node2:s8



node4:n78->node2:s11



node4:n93->node2:s11



node4:n94->node2:s8



node4:n17->node3:s12



node4:n17->node3:s13



node4:n19->node3:s13



node4:n20->node3:s12



node4:n20->node3:s13



node4:n22->node3:s13



node4:n25->node3:s13



node4:n49->node3:s15



node4:n57->node3:s15



node4:n65->node3:s15



node4:n73->node3:s14



node4:n93->node3:s15



node4:n94->node3:s12



node4:n97->node3:s14



node4:n97->node3:s15



node4:n101->node3:s13



node4:n101->node3:s14



node4:n105->node3:s13



node4:n105->node3:s14



node4:n109->node3:s14



node5

s

s

s

s

n27

n28

n30

n36

n38

n51

n52

n54

n59

n60

n62

n91

n99

n100

n102

n107

n108

n110

n

n

n

n


node5:n27->node1:s6



node5:n27->node1:s7



node5:n28->node1:s6



node5:n30->node1:s6



node5:n36->node1:s6



node5:n51->node1:s7



node5:n52->node1:s6



node5:n59->node1:s7



node5:n60->node1:s6



node5:n91->node1:s7



node5:n99->node1:s7



node5:n100->node1:s6



node5:n102->node1:s7



node5:n107->node1:s7



node5:n108->node1:s6



node5:n110->node1:s7



node5:n30->node2:s8



node5:n36->node2:s9



node5:n36->node2:s10



node5:n38->node2:s8



node5:n38->node2:s9



node5:n38->node2:s10



node5:n51->node2:s9



node5:n52->node2:s9



node5:n54->node2:s8



node5:n54->node2:s9



node5:n59->node2:s8



node5:n59->node2:s9



node5:n60->node2:s8



node5:n60->node2:s9



node5:n62->node2:s8



node5:n62->node2:s9



node5:n91->node2:s11



node5:n102->node2:s8



node5:n110->node2:s8



node5:n27->node3:s13



node5:n28->node3:s13



node5:n30->node3:s13



node5:n51->node3:s15



node5:n52->node3:s15



node5:n54->node3:s15



node5:n62->node3:s15



node5:n91->node3:s12



node5:n99->node3:s14



node5:n99->node3:s15



node5:n100->node3:s13



node5:n100->node3:s14



node5:n102->node3:s14



node5:n107->node3:s14



node5:n107->node3:s15



node5:n108->node3:s14



node5:n108->node3:s15



node5:n110->node3:s14



node5:n28->node4:s16





Color-Coded Labels

The following color-coded labels can be printed for marking each node with the set of switches to which it must be connected. The start of each line is the rack number, e.g., rack 2 is [2]. In cases where there are too few cabling colors to assign each switch a unique color, we suggest placing one or more tape stripes on each cable to distinguish between switches of the same color. For example, "/s1" would be the striped cable to switch s1.

[0] s0:
[0] s1:
[0] s2:
[0] s3:
[0] n0: s0 s1 /s16
[0] n15: s0 s1 /s13
[0] n16: s0 s6 /s13
[0] n31: s0 /s12 /s13
[0] n32: s0 s9 s10
[0] n47: s0 s9 s10
[0] n48: s0 s8 s9
[0] n63: s0 s9 /s15
[0] n64: s0 s5 s11
[0] n79: s0 s10 s11
[0] n80: s0 s11 /s12
[0] n95: s0 s11 /s12
[0] n96: s0 s7 /s14
[0] n111: s0 /s13 /s14
[0] n112: s0 s2 /s14
[0] n120: s0 s1 s2
[0] n121: s0 s2 s5
[0] n122: s0 s2 s3
[0] n123: s0 s2 s7
[0] n124: s0 s2 s6
[0] n125: s0 s2 s4
[0] n126: s0 s2 s8
[1] s4:
[1] s5:
[1] s6:
[1] s7:
[1] n1: s1 s5 /s16
[1] n2: s1 s3 s10
[1] n3: s1 s7 /s16
[1] n4: s1 s6 /s16
[1] n5: s1 s4 /s12
[1] n6: s1 s8 /s16
[1] n7: s1 s2 /s13
[1] n8: s1 /s13 /s16
[1] n9: s1 s5 /s16
[1] n10: s1 s3 /s16
[1] n11: s1 s7 /s16
[1] n12: s1 s6 /s16
[1] n13: s1 s4 /s16
[1] n14: s1 s8 /s16
[1] n23: s2 s6 /s13
[1] n24: s1 /s12 /s13
[1] n40: s1 s9 s10
[1] n56: s1 s8 s9
[1] n72: s1 s10 s11
[1] n88: s1 s11 /s12
[1] n104: s1 s7 /s14
[1] n127: s0 s2 /s15
[2] s8:
[2] s9:
[2] s10:
[2] s11:
[2] n18: s3 s6 /s13
[2] n26: s3 /s12 /s13
[2] n33: s3 s5 s10
[2] n34: s3 s10 /s16
[2] n35: s3 s7 s10
[2] n37: s3 s4 s10
[2] n39: s2 s9 s10
[2] n42: s3 s10 /s16
[2] n43: s3 s7 s10
[2] n44: s3 s6 s10
[2] n45: s3 s4 s10
[2] n55: s2 s8 s9
[2] n71: s2 s10 s11
[2] n87: s2 s11 /s12
[2] n103: s2 s7 /s14
[2] n113: s2 s5 /s15
[2] n114: s2 s3 /s15
[2] n115: s2 s7 /s15
[2] n116: s2 s6 /s15
[2] n117: s2 s4 /s14
[2] n118: s2 s8 /s15
[2] n119: s2 /s14 /s15
[3] s12:
[3] s13:
[3] s14:
[3] s15:
[3] n21: s4 /s12 /s13
[3] n29: s4 /s12 /s13
[3] n46: s3 s8 s10
[3] n50: s3 s8 s9
[3] n53: s4 s8 s9
[3] n58: s3 s9 /s15
[3] n61: s4 s9 /s15
[3] n66: s3 s11 /s14
[3] n69: s4 s10 s11
[3] n74: s3 s10 s11
[3] n77: s4 s11 /s14
[3] n81: s4 s5 /s12
[3] n82: s3 s11 /s12
[3] n83: s4 s7 /s12
[3] n84: s4 s6 /s12
[3] n85: s4 /s12 /s14
[3] n86: s4 s8 /s12
[3] n89: s4 s5 /s12
[3] n90: s3 s11 /s12
[3] n92: s4 s6 /s12
[3] n98: s3 s7 /s14
[3] n106: s3 /s14 /s15
[4] s16:
[4] n17: s5 /s12 /s13
[4] n19: s6 s7 /s13
[4] n20: s6 /s12 /s13
[4] n22: s6 s8 /s13
[4] n25: s5 /s13 /s16
[4] n41: s5 s9 s10
[4] n49: s5 s9 /s15
[4] n57: s5 s9 /s15
[4] n65: s5 s11 /s15
[4] n67: s5 s7 s11
[4] n68: s5 s6 s11
[4] n70: s5 s8 s11
[4] n73: s5 s10 /s14
[4] n75: s5 s7 s11
[4] n76: s5 s6 s11
[4] n78: s5 s8 s11
[4] n93: s4 s11 /s15
[4] n94: s4 s8 /s12
[4] n97: s5 /s14 /s15
[4] n101: s4 /s13 /s14
[4] n105: s5 /s13 /s14
[4] n109: s4 s7 /s14
[5] n27: s6 s7 /s13
[5] n28: s6 /s13 /s16
[5] n30: s6 s8 /s13
[5] n36: s6 s9 s10
[5] n38: s8 s9 s10
[5] n51: s7 s9 /s15
[5] n52: s6 s9 /s15
[5] n54: s8 s9 /s15
[5] n59: s7 s8 s9
[5] n60: s6 s8 s9
[5] n62: s8 s9 /s15
[5] n91: s7 s11 /s12
[5] n99: s7 /s14 /s15
[5] n100: s6 /s13 /s14
[5] n102: s7 s8 /s14
[5] n107: s7 /s14 /s15
[5] n108: s6 /s14 /s15
[5] n110: s7 s8 /s14


The WWW form interface for KNITT 20160525 is implemented using custom C code written by Hank Dietz, using CGIC for the basic CGI interface.


The Aggregate The only thing set in stone is our name.