示例#1
0
    def testFlowVlanSnapshotMatch2(self):
        fake_inout_setup(self.inout_controller)
        cls = self.__class__
        vlan1 = "21"
        self.setUpNetworkAndController(vlan1)
        vlan2 = "22"
        cls._setup_vlan(vlan2)

        ip_addr = ipaddress.ip_address("10.200.21.211")
        mocked_set_mobilityd_gw_info(
            IPAddress(address=ip_addr.packed, version=IPBlock.IPV4), "", vlan1)

        ip_addr = ipaddress.ip_address("10.200.22.211")
        mocked_set_mobilityd_gw_info(
            IPAddress(address=ip_addr.packed, version=IPBlock.IPV4), "", vlan2)

        hub.sleep(2)
        while gw_info_map[vlan2].mac is None or gw_info_map[vlan2].mac == '':
            threading.Event().wait(.5)

        logging.info("done waiting for vlan: %s", vlan1)
        snapshot_verifier = SnapshotVerifier(
            self,
            self.BRIDGE,
            self.service_manager,
            max_sleep_time=40,
            datapath=cls.inout_controller._datapath,
            try_snapshot=True)

        with snapshot_verifier:
            pass
        self.assertEqual(gw_info_map[vlan1].mac, 'b2:a0:cc:85:80:21')
        self.assertEqual(gw_info_map[vlan2].mac, 'b2:a0:cc:85:80:22')
示例#2
0
    def testFlowVlanSnapshotMatch(self):
        fake_inout_setup(self.inout_controller)
        cls = self.__class__
        vlan = "11"
        self.setUpNetworkAndController(vlan)
        # wait for atleast one iteration of the ARP probe.

        ip_addr = ipaddress.ip_address("10.200.11.211")
        mocked_set_mobilityd_gw_info(
            IPAddress(
                address=ip_addr.packed,
                version=IPBlock.IPV4,
            ),
            "",
            vlan,
        )
        hub.sleep(2)
        while gw_info_map[vlan].mac is None or gw_info_map[vlan].mac == '':
            threading.Event().wait(.5)

        logging.info("done waiting for vlan: %s", vlan)
        snapshot_verifier = SnapshotVerifier(
            self,
            self.BRIDGE,
            self.service_manager,
            max_sleep_time=40,
            datapath=cls.inout_controller._datapath,
            try_snapshot=True,
        )

        with snapshot_verifier:
            pass
        self.assertEqual(gw_info_map[vlan].mac, 'b2:a0:cc:85:80:11')
示例#3
0
    def testFlowSnapshotMatch(self):
        fake_inout_setup(self.inout_controller)
        cls = self.__class__
        self.setUpNetworkAndController(non_nat_arp_egress_port=cls.UPLINK_BR,
                                       gw_mac_addr="33:44:55:ff:ff:ff")
        # wait for atleast one iteration of the ARP probe.

        ip_addr = ipaddress.ip_address("192.168.128.211")
        vlan = ""
        mocked_set_mobilityd_gw_info(
            IPAddress(address=ip_addr.packed, version=IPBlock.IPV4), "", vlan)
        hub.sleep(2)
        while gw_info_map[vlan].mac is None or gw_info_map[vlan].mac == '':
            threading.Event().wait(.5)

        snapshot_verifier = SnapshotVerifier(
            self,
            self.BRIDGE,
            self.service_manager,
            max_sleep_time=40,
            datapath=cls.inout_controller._datapath,
            try_snapshot=True)
        with snapshot_verifier:
            pass
        self.assertEqual(gw_info_map[vlan].mac, 'b2:a0:cc:85:80:7a')
示例#4
0
    def testFlowSnapshotMatch(self):
        ipv6_addr1 = "2002::22"
        mac_addr1 = "11:22:33:44:55:88"
        mocked_setmacbyip6(ipv6_addr1, mac_addr1)

        ip_addr = ipaddress.ip_address(ipv6_addr1)
        vlan = "NO_VLAN"
        mocked_set_mobilityd_gw_info(
            IPAddress(
                address=ip_addr.packed,
                version=IPBlock.IPV6,
            ),
            "", vlan,
        )
        fake_inout_setup(self.inout_controller)

        snapshot_verifier = SnapshotVerifier(
            self,
            self.BRIDGE,
            self.service_manager,
            max_sleep_time=20,
            datapath=InOutTestNonNATBasicFlowsIPv6.inout_controller._datapath,
        )

        with snapshot_verifier:
            pass
        assert_GW_mac(self, vlan, mac_addr1)
示例#5
0
    def testFlowVlanSnapshotMatch(self):
        cls = self.__class__
        vlan = "11"
        self.setUpNetworkAndController(vlan)
        # wait for atleast one iteration of the ARP probe.
        fake_inout_setup(cls.inout_controller)

        ip_addr = ipaddress.ip_address("10.200.11.211")
        mocked_set_mobilityd_gw_info(
            IPAddress(
                address=ip_addr.packed,
                version=IPBlock.IPV4,
            ),
            'b2:a0:cc:85:80:11', vlan,
        )
        hub.sleep(2)

        check_GW_rec(vlan)

        logging.info("done waiting for vlan: %s", vlan)
        snapshot_verifier = SnapshotVerifier(
            self, self.BRIDGE,
            self.service_manager,
            max_sleep_time=40,
            datapath=cls.inout_controller._datapath,
        )

        with snapshot_verifier:
            pass
        assert_GW_mac(self, vlan, 'b2:a0:cc:85:80:11')
示例#6
0
    def testFlowSnapshotMatch(self):
        cls = self.__class__
        self.setUpNetworkAndController(
            non_nat_arp_egress_port=cls.UPLINK_BR,
            gw_mac_addr="33:44:55:ff:ff:ff",
        )
        fake_inout_setup(cls.inout_controller)
        # wait for atleast one iteration of the ARP probe.

        ip_addr = ipaddress.ip_address("192.168.128.211")
        vlan = ""
        mocked_set_mobilityd_gw_info(
            IPAddress(
                address=ip_addr.packed,
                version=IPBlock.IPV4,
            ),
            "b2:a0:cc:85:80:7a", vlan,
        )
        check_GW_rec(vlan)

        snapshot_verifier = SnapshotVerifier(
            self, self.BRIDGE,
            self.service_manager,
            max_sleep_time=40,
            datapath=cls.inout_controller._datapath,
        )
        with snapshot_verifier:
            pass
        assert_GW_mac(self, vlan, 'b2:a0:cc:85:80:7a')
示例#7
0
    def testFlowVlanSnapshotMatch_static2(self):
        fake_inout_setup(self.inout_controller)
        cls = self.__class__
        # setup network on unused vlan.
        self.setUpNetworkAndController("34")
        # statically configured config

        vlan1 = "31"
        ip_addr = ipaddress.ip_address("10.200.21.100")
        mocked_set_mobilityd_gw_info(
            IPAddress(
                address=ip_addr.packed,
                version=IPBlock.IPV4,
            ),
            "11:33:44:55:66:77",
            vlan1,
        )

        vlan2 = "32"
        ip_addr = ipaddress.ip_address("10.200.22.200")
        mocked_set_mobilityd_gw_info(
            IPAddress(
                address=ip_addr.packed,
                version=IPBlock.IPV4,
            ),
            "22:33:44:55:66:77",
            vlan2,
        )

        ip_addr = ipaddress.ip_address("10.200.22.10")
        mocked_set_mobilityd_gw_info(
            IPAddress(
                address=ip_addr.packed,
                version=IPBlock.IPV4,
            ),
            "00:33:44:55:66:77",
            "",
        )

        hub.sleep(2)
        while gw_info_map[vlan2].mac is None or gw_info_map[vlan2].mac == '':
            threading.Event().wait(.5)

        logging.info("done waiting for vlan: %s", vlan1)
        snapshot_verifier = SnapshotVerifier(
            self,
            self.BRIDGE,
            self.service_manager,
            max_sleep_time=20,
            datapath=cls.inout_controller._datapath,
        )

        with snapshot_verifier:
            pass
        self.assertEqual(gw_info_map[vlan1].mac, '11:33:44:55:66:77')
        self.assertEqual(gw_info_map[vlan2].mac, '22:33:44:55:66:77')
        self.assertEqual(gw_info_map[""].mac, '00:33:44:55:66:77')
示例#8
0
    def testFlowSnapshotMatch(self):
        fake_inout_setup(self.inout_controller)
        snapshot_verifier = SnapshotVerifier(self,
                                             self.BRIDGE,
                                             self.service_manager,
                                             max_sleep_time=20,
                                             datapath=InOutTestNonNATBasicFlows.inout_controller._datapath)

        with snapshot_verifier:
            pass
示例#9
0
    def testFlowVlanSnapshotMatch_static2(self):
        cls = self.__class__
        # setup network on unused vlan.
        self.setUpNetworkAndController("34")
        # statically configured config
        fake_inout_setup(cls.inout_controller)

        vlan1 = "31"
        ip_addr = ipaddress.ip_address("10.200.21.100")
        mocked_set_mobilityd_gw_info(
            IPAddress(
                address=ip_addr.packed,
                version=IPBlock.IPV4,
            ),
            "11:33:44:55:66:77", vlan1,
        )

        vlan2 = "32"
        ip_addr = ipaddress.ip_address("10.200.22.200")
        mocked_set_mobilityd_gw_info(
            IPAddress(
                address=ip_addr.packed,
                version=IPBlock.IPV4,
            ),
            "22:33:44:55:66:77", vlan2,
        )

        ip_addr = ipaddress.ip_address("10.200.22.10")
        mocked_set_mobilityd_gw_info(
            IPAddress(
                address=ip_addr.packed,
                version=IPBlock.IPV4,
            ),
            "00:33:44:55:66:77", "",
        )

        check_GW_rec(vlan1)
        check_GW_rec(vlan2)
        check_GW_rec("")

        assert_GW_mac(self, vlan1, '11:33:44:55:66:77')
        assert_GW_mac(self, vlan2, '22:33:44:55:66:77')
        assert_GW_mac(self, "", '00:33:44:55:66:77')

        hub.sleep(2)
        snapshot_verifier = SnapshotVerifier(
            self, self.BRIDGE,
            self.service_manager,
            max_sleep_time=20,
            datapath=cls.inout_controller._datapath,
            try_snapshot=True,
        )

        with snapshot_verifier:
            pass
示例#10
0
    def testFlowVlanSnapshotMatch_static1(self):
        cls = self.__class__
        # setup network on unused vlan.
        vlan1 = "21"
        self.setUpNetworkAndController(vlan1)
        # statically configured config
        vlan2 = "22"
        fake_inout_setup(cls.inout_controller)

        ip_addr = ipaddress.ip_address("10.200.21.211")
        mocked_set_mobilityd_gw_info(
            IPAddress(
                address=ip_addr.packed,
                version=IPBlock.IPV4,
            ),
            "11:33:44:55:66:77", vlan1,
        )

        ip_addr = ipaddress.ip_address("10.200.22.211")
        mocked_set_mobilityd_gw_info(
            IPAddress(
                address=ip_addr.packed,
                version=IPBlock.IPV4,
            ),
            "22:33:44:55:66:77", vlan2,
        )

        hub.sleep(2)
        check_GW_rec(vlan2)

        logging.info("done waiting for vlan: %s", vlan1)
        snapshot_verifier = SnapshotVerifier(
            self, self.BRIDGE,
            self.service_manager,
            max_sleep_time=20,
            datapath=cls.inout_controller._datapath,
        )

        with snapshot_verifier:
            pass
        assert_GW_mac(self, vlan1, 'b2:a0:cc:85:80:21')
        assert_GW_mac(self, vlan2, '22:33:44:55:66:77')
示例#11
0
    def testFlowVlanSnapshotMatch2(self):
        cls = self.__class__
        vlan1 = "21"
        self.setUpNetworkAndController(vlan1)
        vlan2 = "22"
        cls._setup_vlan(vlan2)
        fake_inout_setup(cls.inout_controller)

        ip_addr = ipaddress.ip_address("10.200.21.211")
        mocked_set_mobilityd_gw_info(
            IPAddress(
                address=ip_addr.packed,
                version=IPBlock.IPV4,
            ),
            "b2:a0:cc:85:80:21", vlan1,
        )

        ip_addr = ipaddress.ip_address("10.200.22.211")
        mocked_set_mobilityd_gw_info(
            IPAddress(
                address=ip_addr.packed,
                version=IPBlock.IPV4,
            ),
            "b2:a0:cc:85:80:22", vlan2,
        )
        check_GW_rec(vlan1)
        check_GW_rec(vlan2)

        logging.info("done waiting for vlan: %s", vlan1)
        snapshot_verifier = SnapshotVerifier(
            self, self.BRIDGE,
            self.service_manager,
            max_sleep_time=40,
            datapath=cls.inout_controller._datapath,
        )

        with snapshot_verifier:
            pass
示例#12
0
 def testFlowSnapshotMatch(self):
     fake_inout_setup(self.inout_controller)
     assert_bridge_snapshot_match(self, self.BRIDGE, self.service_manager)
示例#13
0
    def test_passthrough_rules(self):
        """
           Add UE MAC flows for two subscribers
        """
        imsi_1 = 'IMSI010000000088888'
        other_mac = '5e:cc:cc:b1:aa:aa'
        cli_ip = '1.1.1.1'
        server_ip = '151.42.41.122'

        fake_inout_setup(self.inout_controller)
        # Add subscriber with UE MAC address """
        self.ue_mac_controller.add_ue_mac_flow(imsi_1, self.UE_MAC_1)

        # Create a set of packets
        pkt_sender = ScapyPacketInjector(self.BRIDGE)

        # Only send downlink as the pkt_sender sends pkts from in_port=LOCAL
        downlink_packet1 = EtherPacketBuilder() \
            .set_ether_layer(self.UE_MAC_1, other_mac) \
            .build()
        dhcp_packet = DHCPPacketBuilder() \
            .set_ether_layer(self.UE_MAC_1, other_mac) \
            .set_ip_layer(server_ip, cli_ip) \
            .set_udp_layer(67, 68) \
            .set_bootp_layer(2, cli_ip, server_ip, other_mac) \
            .set_dhcp_layer([("message-type", "ack"), "end"]) \
            .build()
        dns_packet = UDPPacketBuilder() \
            .set_ether_layer(self.UE_MAC_1, other_mac) \
            .set_ip_layer('151.42.41.122', '1.1.1.1') \
            .set_udp_layer(53, 32795) \
            .build()
        arp_packet = ARPPacketBuilder() \
            .set_ether_layer(self.UE_MAC_1, other_mac) \
            .set_arp_layer('1.1.1.1') \
            .set_arp_hwdst(self.UE_MAC_1) \
            .set_arp_src(other_mac, '1.1.1.12') \
            .build()

        # Check if these flows were added (queries should return flows)
        flow_queries = [
            FlowQuery(self._tbl_num,
                      self.testing_controller,
                      match=MagmaMatch(eth_dst=self.UE_MAC_1))
        ]

        # =========================== Verification ===========================
        # Verify 3 flows installed for ue_mac table (3 pkts matched)
        #        4 flows installed for inout (3 pkts matched)
        #        2 flows installed (2 pkts matches)
        flow_verifier = FlowVerifier([
            FlowTest(FlowQuery(self._tbl_num, self.testing_controller), 4, 3),
            FlowTest(FlowQuery(self._ingress_tbl_num, self.testing_controller),
                     4, 3),
            FlowTest(FlowQuery(self._egress_tbl_num, self.testing_controller),
                     3, 2),
            FlowTest(flow_queries[0], 4, 1),
        ], lambda: wait_after_send(self.testing_controller))

        snapshot_verifier = SnapshotVerifier(self, self.BRIDGE,
                                             self.service_manager)

        with flow_verifier, snapshot_verifier:
            pkt_sender.send(dhcp_packet)
            pkt_sender.send(downlink_packet1)
            pkt_sender.send(dns_packet)
            hub.sleep(3)
            pkt_sender.send(arp_packet)

        flow_verifier.verify()