def setUp(self): self.h1 = BasicHost.create('h1') self.h2 = BasicHost.create('h2') self.s1 = RIPRouter.create('s1') self.s2 = RIPRouter.create('s2') # connect switches to host self.s1.linkTo(self.h1) self.s2.linkTo(self.h2) # connect switches together self.s1.linkTo(self.s2) dp_h1 = DiscoveryPacket(self.h1, 1) dp_h2 = DiscoveryPacket(self.h2, 1) dp_s1 = DiscoveryPacket(self.s1, 1) dp_s2 = DiscoveryPacket(self.s2, 1) # send discovery packet between h1 -- s1 on port 0 self.h1.handle_rx(dp_s1, 0) self.s1.handle_rx(dp_h1, 0) # send discovery packet between h2 -- s2 on port 0 self.h2.handle_rx(dp_s2, 0) self.s2.handle_rx(dp_h2, 0) # send discovery packet between s1 -- s2 on port 1 self.s1.handle_rx(dp_s2, 1) self.s2.handle_rx(dp_s1, 1) self.entities = [self.h1, self.h2, self.s1, self.s2]
def create(switch_type=FakeEntity, host_type=FakeEntity, n=2): RIPRouter.create('student') BasicHost.create('dest') FakeEntity.create('announcer', None, [dest, 7]) FakeEntity.create('listener', [dest, 8], None) topo.link(student, announcer) topo.link(student, listener)
def create (switch_type = FakeEntity, host_type = FakeEntity, n = 2): RIPRouter.create('student') BasicHost.create('dest') FakeEntity.create('announcer', None, [dest, 7]) FakeEntity.create('listener', [dest, 8], None) topo.link(student, announcer) topo.link(student, listener)
def create (switch_type = FakeEntity, host_type = FakeEntity, n = 2): RIPRouter.create('A') RIPRouter.create('B') #RIPRouter.create('C') #RIPRouter.create('D') RIPRouter.create('E') FakeEntity.create('Z', {A: 1}, {}) topo.link(A, B) #topo.link(B, C) #topo.link(C, D) #topo.link(D, E) topo.link(B, E) topo.link(B, Z)
def create (switch_type = FakeEntity, host_type = FakeEntity, n = 2): global expectedUpdate1 global expectedSender1 global waittime print "Creating routers..." RIPRouter.create('A') RIPRouter.create('B') RIPRouter.create('C') RIPRouter.create('D') RIPRouter.create('E') RIPRouter.create('F') RIPRouter.create('G') RIPRouter.create('H') RIPRouter.create('I') RIPRouter.create('J') createExpectedDict() FakeEntity.create('Z', expectedUpdate1, expectedSender1, {}) print "Case 1: A-B-Z" topo.link(A, B) #A - B - Z topo.link(B, Z) time.sleep(waittime) if(failed): return print "Case 2: A B-Z" topo.unlink(A, B) #A B - Z time.sleep(waittime) if(failed): return print "Case 3: A-B Z" topo.unlink(B, Z) time.sleep(waittime/2) topo.link(A, B) #A - B Z time.sleep(waittime) if(failed): return print "Case 4: A-B-C-D-E-Z" topo.link(E, Z) #A - B - C - D - E - Z topo.link(B, C) topo.link(C, D) time.sleep(waittime) topo.link(D, E) time.sleep(waittime) if(failed): return print "Case 5: Circle(A,E)-Z" topo.link(E, A) #A - B - C - D - E - Z time.sleep(waittime) # \_____________/ if(failed): return print "Case 6: Clique(A,E)-Z" #topo.link(A, B) topo.link(A, C) topo.link(A, D) #topo.link(A, E) #topo.link(B, C) topo.link(B, D) # ---A--- topo.link(B, E) # / / \ \ time.sleep(waittime) # B--|---|-E -- Z #topo.link(C, D) # \ |/ \| / topo.link(C, E) # C-----D #topo.link(D, E) # Clique time.sleep(waittime) if(failed): return print "Case 7: Centralize(A,{B,C,D,E,Z}" #topo.unlink(A, B) #topo.unlink(A, C) #topo.unlink(A, D) #topo.unlink(A, E) topo.unlink(E, Z) topo.unlink(B, C) topo.unlink(B, D) # Z topo.unlink(B, E) # | topo.unlink(C, D) # B -- A -- E topo.unlink(C, E) # / \ topo.unlink(D, E) # C D time.sleep(waittime) topo.link(A, Z) time.sleep(waittime) if(failed): return print "Case 8: Centralize(A,Circle(B-E,Z))" topo.link(B, C) topo.link(C, D) topo.link(D, E) time.sleep(waittime) # ---Z--- topo.link(E, Z) # / | \ time.sleep(waittime/2) # B -- A -- E topo.link(Z, B) # \ / \ / time.sleep(waittime) # C-----D if(failed): return print "Case 9: A-B-Branch(Z, C-D-E, F-G)" topo.unlink(A, Z) topo.unlink(E, Z) topo.unlink(B, Z) #topo.unlink(A, B) topo.unlink(A, C) topo.unlink(A, D) topo.unlink(A, E) topo.unlink(B, C) topo.link(F, G) #print "REM" #topo.unlink(C, D) #topo.unlink(D, E) time.sleep(waittime) topo.link(B, Z) time.sleep(waittime/2) Z.send_specific_announce({F: 1, G: 2, C: 1, D: 2, E: 3}) time.sleep(waittime/2) topo.unlink(B, Z) topo.link(Z, C) time.sleep(waittime/2) Z.send_specific_announce({F: 1, G: 2, B: 1, A: 2}) time.sleep(waittime/2) # topo.unlink(C, Z) # F - G topo.link(Z, F) # | time.sleep(waittime/2) # A - B - Z - C - D - E Z.send_specific_announce({B: 1, A: 2, C: 1, D: 2, E: 3}) time.sleep(waittime/2) topo.unlink(F, G) Z.send_specific_announce({B: 1, A: 2, C: 1, D: 2, E: 3, G: 100}) #print "NIM" time.sleep(waittime/2) topo.link(F, G) time.sleep(waittime) if(failed): return print "Case 10: EShaped(ABC,EHD,FGZ)" #topo.unlink(B, Z) #topo.unlink(Z, C) topo.unlink(Z, F) #topo.unlink(A, B) topo.unlink(C, D) topo.unlink(D, E) #topo.unlink(F, G) topo.link(B, C) topo.link(A, E) # A ------B------C topo.link(E, H) # | topo.link(H, D) # E ------H------D topo.link(A, F) # | time.sleep(waittime) # F-------G------Z topo.link(G, Z) time.sleep(waittime/2) topo.disconnect(H) time.sleep(waittime) if(failed): return A.remove() B.remove() C.remove() D.remove() E.remove() F.remove() G.remove() H.remove() I.remove() J.remove() Z.remove()
def create (switch_type = FakeEntity, host_type = FakeEntity, n = 2): RIPRouter.create('A') RIPRouter.create('B') FakeEntity.create('C', {A: 1}, {}) topo.link(A, B) topo.link(B, C)
def create(switch_type=FakeEntity, host_type=FakeEntity, n=2): RIPRouter.create('A') RIPRouter.create('B') FakeEntity.create('C', {A: 1}, {}) topo.link(A, B) topo.link(B, C)
def create (switch_type = FakeEntity, host_type = FakeEntity, n = 2): global expectedUpdate1 global expectedSender1 global waittime print "Creating routers..." RIPRouter.create('A') RIPRouter.create('B') RIPRouter.create('C') RIPRouter.create('D') RIPRouter.create('E') RIPRouter.create('F') RIPRouter.create('G') RIPRouter.create('H') RIPRouter.create('I') RIPRouter.create('J') createExpectedDict() FakeEntity.create('Z', expectedUpdate1, expectedSender1, {}) ''' print "Case 1: A-B-Z" topo.link(A, B) #A - B - Z topo.link(B, Z) time.sleep(waittime) if(failed): return print "Case 2: A B-Z" topo.unlink(A, B) #A B - Z time.sleep(waittime) if(failed): return print "Case 3: A-B Z" topo.unlink(B, Z) time.sleep(waittime/2) topo.link(A, B) #A - B Z time.sleep(waittime) if(failed): return print "Case 4: A-B-C-D-E-Z" topo.link(E, Z) #A - B - C - D - E - Z topo.link(B, C) topo.link(C, D) time.sleep(waittime) topo.link(D, E) time.sleep(waittime) if(failed): return print "Case 5: Circle(A,E)-Z" topo.link(E, A) #A - B - C - D - E - Z time.sleep(waittime) # \_____________/ if(failed): return print "Case 6: Clique(A,E)-Z" #topo.link(A, B) topo.link(A, C) topo.link(A, D) #topo.link(A, E) #topo.link(B, C) topo.link(B, D) # ---A--- topo.link(B, E) # / / \ \ time.sleep(waittime) # B--|---|-E -- Z #topo.link(C, D) # \ |/ \| / topo.link(C, E) # C-----D #topo.link(D, E) # Clique time.sleep(waittime) if(failed): return print "Case 7: Centralize(A,{B,C,D,E,Z}" #topo.unlink(A, B) #topo.unlink(A, C) #topo.unlink(A, D) #topo.unlink(A, E) topo.unlink(E, Z) topo.unlink(B, C) topo.unlink(B, D) # Z topo.unlink(B, E) # | topo.unlink(C, D) # B -- A -- E topo.unlink(C, E) # / \ topo.unlink(D, E) # C D time.sleep(waittime) topo.link(A, Z) time.sleep(waittime) if(failed): return print "Case 8: Centralize(A,Circle(B-E,Z))" topo.link(B, C) topo.link(C, D) topo.link(D, E) time.sleep(waittime) # ---Z--- topo.link(E, Z) # / | \ time.sleep(waittime/2) # B -- A -- E topo.link(Z, B) # \ / \ / time.sleep(waittime) # C-----D if(failed): return print "Case 9: A-B-Branch(Z, C-D-E, F-G)" topo.unlink(A, Z) topo.unlink(E, Z) topo.unlink(B, Z) #topo.unlink(A, B) topo.unlink(A, C) topo.unlink(A, D) topo.unlink(A, E) topo.unlink(B, C) topo.link(F, G) #print "REM" #topo.unlink(C, D) #topo.unlink(D, E) time.sleep(waittime) topo.link(B, Z) time.sleep(waittime/2) Z.send_specific_announce({F: 1, G: 2, C: 1, D: 2, E: 3}) time.sleep(waittime/2) topo.unlink(B, Z) topo.link(Z, C) time.sleep(waittime/2) Z.send_specific_announce({F: 1, G: 2, B: 1, A: 2}) time.sleep(waittime/2) # topo.unlink(C, Z) # F - G topo.link(Z, F) # | time.sleep(waittime/2) # A - B - Z - C - D - E Z.send_specific_announce({B: 1, A: 2, C: 1, D: 2, E: 3}) time.sleep(waittime/2) topo.unlink(F, G) Z.send_specific_announce({B: 1, A: 2, C: 1, D: 2, E: 3, G: 100}) #print "NIM" time.sleep(waittime/2) topo.link(F, G) time.sleep(waittime) if(failed): return ''' print "Case 10: EShaped(ABC,EHD,FGZ)" #topo.unlink(B, Z) #topo.unlink(Z, C) topo.unlink(Z, F) #topo.unlink(A, B) topo.unlink(C, D) topo.unlink(D, E) #topo.unlink(F, G) topo.link(B, C) topo.link(A, E) # A ------B------C topo.link(E, H) # | topo.link(H, D) # E ------H------D topo.link(A, F) # | time.sleep(waittime) # F-------G------Z topo.link(G, Z) time.sleep(waittime/2) topo.disconnect(H) time.sleep(waittime) if(failed): return A.remove() B.remove() C.remove() D.remove() E.remove() F.remove() G.remove() H.remove() I.remove() J.remove() Z.remove()
def create(switch_type=FakeEntity, host_type=FakeEntity, n=2): RIPRouter.create("A") RIPRouter.create("B") FakeEntity.create("C", {A: 1}, {}) topo.link(A, B) topo.link(B, C)
def create (switch_type = FakeEntity, host_type = FakeEntity, n = 2): RIPRouter.create('A') BasicHost.create('C') FakeEntity.create('B', {C: 100}, {C: 1}) topo.link(A, B)
def create(switch_type=FakeEntity, host_type=FakeEntity, n=2): RIPRouter.create("A") BasicHost.create("C") FakeEntity.create("B", {C: 100}, {C: 1}) topo.link(A, B)