Example #1
0
    def testPrefixWithdrawal(self):
        """Testing that prefix are unreachable by all routers after prefix withdrawal"""
        #Same as above.  Withdraw prefix after some time, and check that no one has a path
        for mode in self.bgp_modes:
            SimBGP.init()
            #SimBGP.readConfigFile("../../config/plain_bgp_base_topo.cfg")
            SimBGP.readConfigFile("plain_bgp_base_topo.cfg")
            SimBGP.BGPModeAllRouters(mode)
            SimBGP.computeIGP()
            SimBGP.run()

            for router in SimBGP._router_list:
                self.assertNotEqual(
                    len(SimBGP._router_list[router].loc_rib["2.0/8"]), 0)
            SimBGP._event_Scheduler.add(
                SimBGP.CEvent(SimBGP._systime, ["2.1", "2.0/8"],
                              SimBGP.EVENT_WITHDRAW_PREFIX))
            SimBGP.run()
            for router in SimBGP._router_list:
                try:
                    self.assertEqual(
                        len(SimBGP._router_list[router].loc_rib["2.0/8"]), 0)
                except:
                    print("Assertion failed with router", router, "in mode",
                          mode)
                    raise
Example #2
0
 def testLinkDown(self):
     #SimBGP.runConfigFile("../../config/igp_config.cfg")
     SimBGP.runConfigFile("igp_config.cfg")
     SimBGP._event_Scheduler.add(
         SimBGP.CEvent(SimBGP.toSystemTime(100.0), ["3", "2"],
                       SimBGP.EVENT_LINK_DOWN))
     SimBGP.run()
     self.assertEqual(SimBGP._igp_graph.getShortestPathLength("3", "2"),
                      2000)
Example #3
0
 def testPrefixWithdrawal(self):
     """Testing that prefix are unreachable by all routers after prefix withdrawal"""
     #Same as above.  Withdraw prefix after some time, and check that no one has a path
     #SimBGP.runConfigFile("../../config/plain_bgp_base_topo.cfg")
     SimBGP.runConfigFile("plain_bgp_base_topo.cfg")
     SimBGP._event_Scheduler.add(
         SimBGP.CEvent(SimBGP._systime, ["2.1", "2.0/8"],
                       SimBGP.EVENT_WITHDRAW_PREFIX))
     SimBGP.run()
     for router in SimBGP._router_list:
         self.assertEqual(len(SimBGP._router_list[router].loc_rib["2.0/8"]),
                          0)
Example #4
0
 def testLinkDown(self):
     """Checking behaviour when an IGP link is down"""
     for mode in self.bgp_modes:
         SimBGP.init()
         #SimBGP.readConfigFile("../../config/plain_hot_potato.cfg")
         SimBGP.readConfigFile("plain_hot_potato.cfg")
         SimBGP.BGPModeAllRouters(mode)
         SimBGP.computeIGP()
         SimBGP.run()
         self.assertEqual(
             SimBGP.getRouterLink("0.0.0.1", "0.0.0.2").reach,
             SimBGP.PEER_REACH)
         #Check that each router prefers path via itself
         self.assertEqual(
             SimBGP._router_list["0.0.0.2"].loc_rib["1.0/8"][0].src_pid,
             "0.0.0.0")
         self.assertEqual(
             SimBGP._router_list["0.0.0.1"].loc_rib["1.0/8"][0].src_pid,
             "0.0.0.0")
         #Check that each receiving router prefers eBGP path
         self.assertEqual(
             SimBGP._router_list["0.0.0.3"].loc_rib["1.0/8"][0].src_pid,
             "1.0.0.0")
         self.assertEqual(
             SimBGP._router_list["0.0.0.0"].loc_rib["1.0/8"][0].src_pid,
             "2.0.0.0")
         #Link down
         SimBGP._event_Scheduler.add(
             SimBGP.CEvent(SimBGP.toSystemTime(10.0),
                           ["0.0.0.1", "0.0.0.2"], SimBGP.EVENT_LINK_DOWN))
         SimBGP.run()
         self.assertEqual(
             SimBGP.getRouterLink("0.0.0.1", "0.0.0.2").reach,
             SimBGP.PEER_UNREACH)
         self.assertEqual(
             SimBGP._router_list["0.0.0.2"].loc_rib["1.0/8"][0].src_pid,
             "0.0.0.3")
         self.assertEqual(
             SimBGP._router_list["0.0.0.1"].loc_rib["1.0/8"][0].src_pid,
             "0.0.0.0")
         #Check that each receiving router prefers eBGP path
         self.assertEqual(
             SimBGP._router_list["0.0.0.3"].loc_rib["1.0/8"][0].src_pid,
             "1.0.0.0")
         self.assertEqual(
             SimBGP._router_list["0.0.0.0"].loc_rib["1.0/8"][0].src_pid,
             "2.0.0.0")
         #Check Link Up
         SimBGP._event_Scheduler.add(
             SimBGP.CEvent(SimBGP.toSystemTime(11.0),
                           ["0.0.0.1", "0.0.0.2"], SimBGP.EVENT_LINK_UP))
         SimBGP.run()
         self.assertTrue(
             SimBGP._igp_graph.isReachableFrom("0.0.0.1", "0.0.0.2"))
         self.assertEqual(
             SimBGP.getRouterLink("0.0.0.1", "0.0.0.2").reach,
             SimBGP.PEER_REACH)
         self.assertEqual(
             SimBGP._router_list["0.0.0.2"].loc_rib["1.0/8"][0].src_pid,
             "0.0.0.0")
         self.assertEqual(
             SimBGP._router_list["0.0.0.1"].loc_rib["1.0/8"][0].src_pid,
             "0.0.0.0")