コード例 #1
0
    def setUpClassDevices(cls):
        BridgeTools.delete_ns_all()

        BridgeTools.create_veth_pair(cls.gtp_veth, cls.gtp_veth_ns)
        BridgeTools.ifup_netdev(cls.gtp_veth, cls.gtp_pkt_dst + "/24")

        BridgeTools.create_veth_pair(cls.sgi_veth, cls.sgi_veth1)

        BridgeTools.create_ns_and_move_veth(cls.NS_NAME, cls.sgi_veth1, cls.inner_src_ip + "/24")

        BridgeTools.ifup_netdev(cls.sgi_veth, cls.inner_dst_ip + "/24")
        BridgeTools.ifup_netdev(cls.gtp_veth_ns, cls.gtp_pkt_src + "/24")

        gw_ip = IPAddress(version=IPAddress.IPV4, address=socket.inet_aton(cls.sgi_veth_ip))

        cls.ebpf_man = EbpfManager(cls.sgi_veth, cls.gtp_veth, gw_ip, bpf_ul_file=UL_HANDLER, bpf_dl_file=DL_HANDLER, bpf_header_path=BPF_HEADER_PATH)
        cls.ebpf_man.detach_dl_ebpf()
        cls.ebpf_man.attach_dl_ebpf()

        cls.sniffer = AsyncSniffer(
            iface='gtpu_sys_2152',
            store=False,
            prn=cls.pkt_cap_fun,
        )
        cls.sniffer.start()
コード例 #2
0
    def setUpClassDevices(cls):
        BridgeTools.delete_ns_all()

        BridgeTools.create_veth_pair(cls.gtp_veth, cls.gtp_veth_ns)
        BridgeTools.ifup_netdev(cls.gtp_veth, cls.gtp_pkt_dst + "/24")

        BridgeTools.create_veth_pair(cls.sgi_veth, cls.sgi_veth1)

        BridgeTools.create_ns_and_move_veth(cls.NS_NAME, cls.gtp_veth_ns,
                                            cls.gtp_pkt_src + "/24")

        BridgeTools.ifup_netdev(cls.sgi_veth, cls.sgi_veth_ip + "/24")
        BridgeTools.ifup_netdev(cls.sgi_veth1)

        cls.ebpf_man = ebpf_manager(cls.sgi_veth, cls.gtp_veth,
                                    cls.sgi_veth_ip, True, UL_HANDLER)
        cls.ebpf_man.detach_ul_ebpf()
        cls.ebpf_man.attach_ul_ebpf()
        time.sleep(2)
        cls.sniffer = AsyncSniffer(
            iface=cls.sgi_veth1,
            store=False,
            prn=cls.pkt_cap_fun,
        )
        cls.sniffer.start()
コード例 #3
0
    def test_attach_tunnel_flows(self):

        # Need to delete all default flows in table 0 before
        # install the specific flows test case.
        self.test_detach_default_tunnel_flows()

        ip_no = hex(socket.htonl(int(ipaddress.ip_address(self.EnodeB_IP))))
        buf = "g_{}".format(ip_no[2:])

        BridgeTools.create_veth_pair(buf, buf + "ns")
        BridgeTools.add_ovs_port(self.BRIDGE, buf, "40")

        seid1 = 5000
        ue_ip_addr = "192.168.128.30"
        self.classifier_controller.add_tunnel_flows(65525, 1, 100000,
                                                    IPAddress(version=IPAddress.IPV4,address=ue_ip_addr.encode('utf-8')),
                                                    self.EnodeB_IP, seid1)

        seid2 = 5001
        ue_ip_addr = "192.168.128.31"
        self.classifier_controller.add_tunnel_flows(65525, 2,100001,
                                                    IPAddress(version=IPAddress.IPV4,address=ue_ip_addr.encode('utf-8')),
                                                    self.EnodeB_IP, seid2)

        snapshot_verifier = SnapshotVerifier(self, self.BRIDGE,
                                             self.service_manager)
        with snapshot_verifier:
            pass
コード例 #4
0
ファイル: test_classifier.py プロジェクト: ssanadhya/magma
    def test_attach_s8_tunnel_flows(self):

        # Need to delete all default flows in table 0 before
        # install the specific flows test case.
        self.test_detach_default_tunnel_flows()

        ip_no = hex(socket.htonl(int(ipaddress.ip_address(self.EnodeB_IP))))
        buf = "g_{}".format(ip_no[2:])

        BridgeTools.create_veth_pair(buf, buf + "ns")
        BridgeTools.add_ovs_port(self.BRIDGE, buf, "40")

        ue_ip_addr = "192.168.128.15"
        ip_flow_dl = IPFlowDL(set_params=0)
        self.classifier_controller.add_s8_tunnel_flows(
            65525,
            10,
            5000,
            IPAddress(version=IPAddress.IPV4,
                      address=ue_ip_addr.encode('utf-8')),
            self.EnodeB_IP,
            5678,
            "192.168.60.112",
            3000,
            True,
            ip_flow_dl=ip_flow_dl,
        )

        snapshot_verifier = SnapshotVerifier(
            self,
            self.BRIDGE,
            self.service_manager,
        )
        with snapshot_verifier:
            pass
コード例 #5
0
ファイル: test_he.py プロジェクト: katojunya/magma
    def setUpClass(cls, *_):
        """
        Starts the thread which launches ryu apps

        Create a testing bridge, add a port, setup the port interfaces. Then
        launch the ryu apps for testing pipelined. Gets the references
        to apps launched by using futures.
        """
        he.activate_he_urls_for_ue = mocked_activate_he_urls_for_ue
        he.deactivate_he_urls_for_ue = mocked_deactivate_he_urls_for_ue

        super(HeTableTest, cls).setUpClass()
        warnings.simplefilter('ignore')
        cls.service_manager = create_service_manager([], ['proxy'])
        cls._tbl_num = cls.service_manager.get_table_num(HeaderEnrichmentController.APP_NAME)

        BridgeTools.create_veth_pair(cls.VETH, cls.VETH_NS)
        BridgeTools.create_bridge(cls.BRIDGE, cls.IFACE)
        BridgeTools.add_ovs_port(cls.BRIDGE, cls.VETH, cls.PROXY_PORT)

        he_controller_reference = Future()
        testing_controller_reference = Future()

        test_setup = TestSetup(
            apps=[
                PipelinedController.HeaderEnrichment,
                PipelinedController.Testing,
                PipelinedController.StartupFlows,
            ],
            references={
                PipelinedController.HeaderEnrichment:
                    he_controller_reference,
                PipelinedController.Testing:
                    testing_controller_reference,
                PipelinedController.StartupFlows:
                    Future(),
            },
            config={
                'setup_type': 'LTE',
                'bridge_name': cls.BRIDGE,
                'bridge_ip_address': cls.BRIDGE_IP,
                'uplink_port': 20,
                'proxy_port_name': cls.VETH,
                'clean_restart': True,
                'enable_nat': True,
                'ovs_gtp_port_number': 10,
            },
            mconfig=PipelineD(
                ue_ip_block=cls.UE_BLOCK,
            ),
            loop=None,
            service_manager=cls.service_manager,
            integ_test=False,
        )

        cls.thread = start_ryu_app_thread(test_setup)
        cls.he_controller = he_controller_reference.result()
        cls.testing_controller = testing_controller_reference.result()
コード例 #6
0
 def _setup_vlan_pop_dev(self):
     if self.config.ovs_vlan_workaround:
         # Create device
         BridgeTools.create_veth_pair(self.config.dev_vlan_in,
                                      self.config.dev_vlan_out)
         # Add to OVS,
         # OFP requested port (70 and 71) no are for test validation,
         # its not used anywhere else.
         BridgeTools.add_ovs_port(self.config.uplink_bridge,
                                  self.config.dev_vlan_in, "70")
         BridgeTools.add_ovs_port(self.config.uplink_bridge,
                                  self.config.dev_vlan_out, "71")
コード例 #7
0
ファイル: test_ebpf_dl_dp.py プロジェクト: ganeshg87/magma
    def setUpClassDevices(cls):
        BridgeTools.delete_ns_all()

        BridgeTools.create_veth_pair(cls.gtp_veth, cls.gtp_veth_ns)
        BridgeTools.ifup_netdev(cls.gtp_veth, cls.gtp_pkt_dst + "/24")

        BridgeTools.create_veth_pair(cls.sgi_veth, cls.sgi_veth1)

        BridgeTools.create_ns_and_move_veth(cls.NS_NAME, cls.sgi_veth1, cls.inner_src_ip + "/24")

        BridgeTools.ifup_netdev(cls.sgi_veth, cls.inner_dst_ip + "/24")
        BridgeTools.ifup_netdev(cls.gtp_veth_ns, cls.gtp_pkt_src + "/24")

        cls.ebpf_man = ebpf_manager(cls.sgi_veth, cls.gtp_veth, cls.sgi_veth_ip, enabled=True, bpf_ul_file=UL_HANDLER, bpf_dl_file=DL_HANDLER)
        cls.ebpf_man.detach_dl_ebpf()
        cls.ebpf_man.attach_dl_ebpf()

        cls.sniffer = AsyncSniffer(
            iface='gtpu_sys_2152',
            store=False,
            prn=cls.pkt_cap_fun,
        )
        cls.sniffer.start()
コード例 #8
0
    def setUpClass(cls):
        """
        Starts the thread which launches ryu apps

        Create a testing bridge, add a port, setup the port interfaces. Then
        launch the ryu apps for testing pipelined. Gets the references
        to apps launched by using futures, mocks the redis policy_dictionary
        of enforcement_controller
        """
        super(EnforcementTableHeTest, cls).setUpClass()
        warnings.simplefilter('ignore')
        cls.service_manager = create_service_manager([PipelineD.ENFORCEMENT],
                                                     ['proxy'])
        cls._tbl_num = cls.service_manager.get_table_num(
            EnforcementController.APP_NAME)
        BridgeTools.create_bridge(cls.BRIDGE, cls.IFACE)

        BridgeTools.create_veth_pair(cls.VETH, cls.VETH_NS)
        BridgeTools.add_ovs_port(cls.BRIDGE, cls.VETH, cls.PROXY_PORT)

        enforcement_controller_reference = Future()
        testing_controller_reference = Future()
        he.activate_he_urls_for_ue = mocked_activate_he_urls_for_ue
        he.deactivate_he_urls_for_ue = mocked_deactivate_he_urls_for_ue

        test_setup = TestSetup(apps=[
            PipelinedController.Enforcement,
            PipelinedController.HeaderEnrichment, PipelinedController.Testing,
            PipelinedController.StartupFlows
        ],
                               references={
                                   PipelinedController.Enforcement:
                                   enforcement_controller_reference,
                                   PipelinedController.HeaderEnrichment:
                                   cls.he_controller_reference,
                                   PipelinedController.Testing:
                                   testing_controller_reference,
                                   PipelinedController.StartupFlows: Future(),
                               },
                               config={
                                   'bridge_name': cls.BRIDGE,
                                   'bridge_ip_address': '192.168.128.1',
                                   'nat_iface': 'eth2',
                                   'enodeb_iface': 'eth1',
                                   'qos': {
                                       'enable': False
                                   },
                                   'clean_restart': True,
                                   'uplink_port': 20,
                                   'proxy_port_name': cls.VETH,
                                   'enable_nat': True,
                                   'ovs_gtp_port_number': 10,
                               },
                               mconfig=PipelineD(),
                               loop=None,
                               service_manager=cls.service_manager,
                               integ_test=False)

        cls.thread = start_ryu_app_thread(test_setup)

        cls.enforcement_controller = enforcement_controller_reference.result()
        cls.testing_controller = testing_controller_reference.result()
コード例 #9
0
    def setUpClass(cls):
        """
        Starts the thread which launches ryu apps

        Create a testing bridge, add a port, setup the port interfaces. Then
        launch the ryu apps for testing pipelined. Gets the references
        to apps launched by using futures.
        """
        super(UplinkBridgeWithNonNATTestVlan, cls).setUpClass()
        warnings.simplefilter('ignore')
        cls.service_manager = create_service_manager([])

        uplink_bridge_controller_reference = Future()
        testing_controller_reference = Future()
        test_setup = TestSetup(
            apps=[
                PipelinedController.UplinkBridge, PipelinedController.Testing,
                PipelinedController.StartupFlows
            ],
            references={
                PipelinedController.UplinkBridge:
                uplink_bridge_controller_reference,
                PipelinedController.Testing: testing_controller_reference,
                PipelinedController.StartupFlows: Future(),
            },
            config={
                'bridge_name': cls.BRIDGE,
                'bridge_ip_address': cls.BRIDGE_IP,
                'ovs_gtp_port_number': 32768,
                'clean_restart': True,
                'enable_nat': False,
                'uplink_bridge': cls.UPLINK_BRIDGE,
                'uplink_eth_port_name': cls.UPLINK_ETH_PORT,
                'virtual_mac': '02:bb:5e:36:06:4b',
                'uplink_patch': cls.UPLINK_PATCH,
                'uplink_dhcp_port': cls.UPLINK_DHCP,
                'sgi_management_iface_vlan': cls.VLAN_TAG,
                'dev_vlan_in': cls.VLAN_DEV_IN,
                'dev_vlan_out': cls.VLAN_DEV_OUT,
                'sgi_management_iface_ip_addr': '1.1.11.1',
            },
            mconfig=None,
            loop=None,
            service_manager=cls.service_manager,
            integ_test=False,
        )

        BridgeTools.create_bridge(cls.BRIDGE, cls.BRIDGE)
        BridgeTools.create_bridge(cls.UPLINK_BRIDGE, cls.UPLINK_BRIDGE)

        BridgeTools.create_veth_pair(cls.VLAN_DEV_IN, cls.VLAN_DEV_OUT)
        # Add to OVS,
        BridgeTools.add_ovs_port(cls.UPLINK_BRIDGE, cls.VLAN_DEV_IN, "70")
        BridgeTools.add_ovs_port(cls.UPLINK_BRIDGE, cls.VLAN_DEV_OUT, "71")

        # validate vlan id set
        vlan = "10"
        BridgeTools.create_bridge(cls.UPLINK_BRIDGE, cls.UPLINK_BRIDGE)

        BridgeTools.create_internal_iface(cls.UPLINK_BRIDGE, cls.UPLINK_DHCP,
                                          None)
        BridgeTools.create_internal_iface(cls.UPLINK_BRIDGE, cls.UPLINK_PATCH,
                                          None)
        BridgeTools.create_internal_iface(cls.UPLINK_BRIDGE,
                                          cls.UPLINK_ETH_PORT, None)

        cls.thread = start_ryu_app_thread(test_setup)
        cls.uplink_br_controller = uplink_bridge_controller_reference.result()

        cls.testing_controller = testing_controller_reference.result()