def runTest(self): of_ports = testutils.clear_switch(self, basic_port_map.keys(), basic_logger) for max_len in [ 0, 99, DEFAULT_MISS_SEND_LEN, ofp.OFPCML_MAX, ofp.OFPCML_NO_BUFFER ]: rc = testutils.delete_all_flows(self.controller, basic_logger) self.assertEqual(rc, 0, "Failed to delete all flows") testutils.set_config_verify(self, max_len=(max_len % ofp.OFPCML_MAX + 10)) if max_len == ofp.OFPCML_NO_BUFFER: testutils.set_config_verify(self, max_len=max_len) testutils.set_flow_miss_entry(self, ofp.OFPTC_TABLE_MISS_CONTROLLER, max_len, 0) for of_port in basic_port_map.keys(): basic_logger.info("PKT IN test, port " + str(of_port)) pkt = testutils.simple_tcp_packet() self.dataplane.send(of_port, str(pkt)) #@todo Check for unexpected messages? testutils.do_barrier(self.controller) testutils.packetin_verify(self, pkt, max_len) response, _ = self.controller.poll(ofp.OFPT_PACKET_IN, 1) while response != None: response, _ = self.controller.poll(ofp.OFPT_PACKET_IN, 1) testutils.set_config_verify(self, max_len=DEFAULT_MISS_SEND_LEN)
def runTest(self): #async_logger.info("Running Async_NoPacketIn") #verifying without set_async_request, switch will packet in #step 1-1:clear all flow entries for unmatching of_ports = testutils.clear_switch(self, async_port_map.keys(), async_logger) #step 2-1:controller sends set_async_request msg async_logger.info("Sending set_async_request") mask = 1 << ofp.OFPR_NO_MATCH request_set = create_set_async(pkt_in_mstr = mask) #print(request_set.show()) set_async_verify(self, request_set) #result 2-1: contrller sends msg successfully #no match default deal:drop; add flow entry to packet_in #step 3-1: install default mismatch flow entry ,action=packetin; testutils.set_table_config(self, config = ofp.OFPTC_TABLE_MISS_CONTROLLER) #send data to port for of_port in of_ports: async_logger.info("PKT IN test, port " + str(of_port)) pkt = testutils.simple_tcp_packet() self.dataplane.send(of_port, str(pkt)) #@todo Check for unexpected messages? testutils.packetin_verify(self, pkt) #print(response) #"verifying with set_async_request, switch will packet in" #step 1-2:clear all flow entries for unmatching rc = testutils.clear_switch(self, async_port_map.keys(), async_logger) #step 2-2:controller sends set_async_request msg async_logger.info("Sending set_async_request") mask = 0xffffffff ^ (1 << ofp.OFPR_NO_MATCH) request_set = create_set_async(pkt_in_mstr = mask) set_async_verify(self, request_set) #print("2-2 request_set"+request_set.show()) #result 2-2: contrller sends msg successfully #no match default deal:drop; add flow entry to packet_in #step 3-2: install default mismatch flow entry ,action=packetin; testutils.set_table_config(self, config = ofp.OFPTC_TABLE_MISS_CONTROLLER) #(response, _) = self.controller.poll(ofp.OFPT_PACKET_IN, 2) #send data to port for of_port in async_port_map.keys(): async_logger.info("PKT IN test, port " + str(of_port)) pkt = testutils.simple_tcp_packet() self.dataplane.send(of_port, str(pkt)) #@todo Check for unexpected messages? (response, _) = self.controller.poll(ofp.OFPT_PACKET_IN, 2) #print(response) self.assertTrue(response is None, 'Packet in message received unexpected') msg = create_set_async() set_async_verify(self, msg)
def reply_check_ctrl(parent, ip_src=MT_TEST_IP, tcp_sport=10, exp_pkt=None, ing_port=0): """ Receiving and received packet check on controlplane """ pkt = testutils.simple_tcp_packet(ip_src=ip_src, tcp_sport=tcp_sport) parent.dataplane.send(ing_port, str(pkt)) if exp_pkt is None: exp_pkt = pkt testutils.packetin_verify(parent, exp_pkt)
def runTest(self): # Construct packet to send to dataplane # Send packet to dataplane, once to each port # Poll controller with expect message type packet in of_ports = testutils.clear_switch(self, basic_port_map.keys(), basic_logger) testutils.set_table_config(self, 0, ofp.OFPTC_TABLE_MISS_CONTROLLER, True) #_,miss_send_len = testutils.get_config_reply_verify(self) testutils.set_config_verify(self, max_len = ofp.OFPCML_NO_BUFFER) for of_port in basic_port_map.keys(): basic_logger.info("PKT IN test, port " + str(of_port)) pkt = testutils.simple_tcp_packet() self.dataplane.send(of_port, str(pkt)) #@todo Check for unexpected messages? testutils.packetin_verify(self, pkt, ofp.OFPCML_NO_BUFFER) response,_ = self.controller.poll(ofp.OFPT_PACKET_IN, 1) while response != None: response,_ = self.controller.poll(ofp.OFPT_PACKET_IN, 1) testutils.set_config_verify(self, max_len = DEFAULT_MISS_SEND_LEN)
def runTest(self): of_ports = testutils.clear_switch(self, basic_port_map.keys(), basic_logger) for max_len in [0, 99, DEFAULT_MISS_SEND_LEN, ofp.OFPCML_MAX, ofp.OFPCML_NO_BUFFER]: rc = testutils.delete_all_flows(self.controller, basic_logger) self.assertEqual(rc, 0, "Failed to delete all flows") testutils.set_config_verify(self, max_len = (max_len % ofp.OFPCML_MAX + 10)) if max_len == ofp.OFPCML_NO_BUFFER: testutils.set_config_verify(self, max_len = max_len) testutils.set_flow_miss_entry(self, ofp.OFPTC_TABLE_MISS_CONTROLLER, max_len, 0) for of_port in basic_port_map.keys(): basic_logger.info("PKT IN test, port " + str(of_port)) pkt = testutils.simple_tcp_packet() self.dataplane.send(of_port, str(pkt)) #@todo Check for unexpected messages? testutils.do_barrier(self.controller) testutils.packetin_verify(self, pkt, max_len) response,_ = self.controller.poll(ofp.OFPT_PACKET_IN, 1) while response != None: response,_ = self.controller.poll(ofp.OFPT_PACKET_IN, 1) testutils.set_config_verify(self, max_len = DEFAULT_MISS_SEND_LEN)
def runTest(self): # Construct packet to send to dataplane # Send packet to dataplane, once to each port # Poll controller with expect message type packet in of_ports = testutils.clear_switch(self, basic_port_map.keys(), basic_logger) testutils.set_table_config(self, 0, ofp.OFPTC_TABLE_MISS_CONTROLLER, True) #_,miss_send_len = testutils.get_config_reply_verify(self) testutils.set_config_verify(self, max_len=ofp.OFPCML_NO_BUFFER) for of_port in basic_port_map.keys(): basic_logger.info("PKT IN test, port " + str(of_port)) pkt = testutils.simple_tcp_packet() self.dataplane.send(of_port, str(pkt)) #@todo Check for unexpected messages? testutils.packetin_verify(self, pkt, ofp.OFPCML_NO_BUFFER) response, _ = self.controller.poll(ofp.OFPT_PACKET_IN, 1) while response != None: response, _ = self.controller.poll(ofp.OFPT_PACKET_IN, 1) testutils.set_config_verify(self, max_len=DEFAULT_MISS_SEND_LEN)
def runTest(self): # Construct packet to send to dataplane # Send packet to dataplane # Poll controller with expect message type packet in of_ports = testutils.clear_switch(self, basic_port_map.keys(), basic_logger) max_len = 40 testutils.set_flow_miss_entry(self, ofp.OFPTC_TABLE_MISS_CONTROLLER, max_len, 0) # These will get put into function outpkt = testutils.simple_tcp_packet() of_ports = basic_port_map.keys() of_ports.sort() #_,miss_send_len = testutils.get_config_reply_verify(self) #testutils.set_config_verify(self, max_len = 40) for dp_port in of_ports: (response, _) = self.controller.poll(ofp.OFPT_PACKET_IN, 2) for egr_port in of_ports: if egr_port != dp_port: break #_,max_len = testutils.get_config_reply_verify(self) self.dataplane.send(egr_port, str(outpkt)) testutils.do_barrier(self.controller) buffer_id = testutils.packetin_verify(self, outpkt, max_len) response, _ = self.controller.poll(ofp.OFPT_PACKET_IN, 1) while response != None: response, _ = self.controller.poll(ofp.OFPT_PACKET_IN, 1) msg = message.packet_out() msg.in_port = ofp.OFPP_CONTROLLER msg.buffer_id = buffer_id act = action.action_output() act.port = dp_port self.assertTrue(msg.actions.add(act), 'Could not add action to msg') basic_logger.info("PacketOut to: " + str(dp_port)) testutils.ofmsg_send(self, msg) (of_port, pkt, _) = self.dataplane.poll(timeout=3) self.assertTrue(pkt is not None, 'Packet not received') basic_logger.info("PacketOut: got pkt from " + str(of_port)) if of_port is not None: self.assertEqual(of_port, dp_port, "Unexpected receive port") self.assertEqual(str(outpkt), str(pkt), 'Response packet does not match send packet')
def runTest(self): # Construct packet to send to dataplane # Send packet to dataplane # Poll controller with expect message type packet in of_ports = testutils.clear_switch(self, basic_port_map.keys(), basic_logger) max_len = 40 testutils.set_flow_miss_entry(self, ofp.OFPTC_TABLE_MISS_CONTROLLER, max_len, 0) # These will get put into function outpkt = testutils.simple_tcp_packet() of_ports = basic_port_map.keys() of_ports.sort() #_,miss_send_len = testutils.get_config_reply_verify(self) #testutils.set_config_verify(self, max_len = 40) for dp_port in of_ports: (response, _) = self.controller.poll(ofp.OFPT_PACKET_IN, 2) for egr_port in of_ports: if egr_port != dp_port: break #_,max_len = testutils.get_config_reply_verify(self) self.dataplane.send(egr_port, str(outpkt)) testutils.do_barrier(self.controller) buffer_id = testutils.packetin_verify(self, outpkt, max_len) response,_ = self.controller.poll(ofp.OFPT_PACKET_IN, 1) while response != None: response,_ = self.controller.poll(ofp.OFPT_PACKET_IN, 1) msg = message.packet_out() msg.in_port = ofp.OFPP_CONTROLLER msg.buffer_id = buffer_id act = action.action_output() act.port = dp_port self.assertTrue(msg.actions.add(act), 'Could not add action to msg') basic_logger.info("PacketOut to: " + str(dp_port)) testutils.ofmsg_send(self, msg) (of_port, pkt, _) = self.dataplane.poll(timeout=3) self.assertTrue(pkt is not None, 'Packet not received') basic_logger.info("PacketOut: got pkt from " + str(of_port)) if of_port is not None: self.assertEqual(of_port, dp_port, "Unexpected receive port") self.assertEqual(str(outpkt), str(pkt), 'Response packet does not match send packet')
def runTest(self): #async_logger.info("Running Async_NoPacketIn") #verifying without set_async_request, switch will packet in #step 1-1:clear all flow entries for unmatching of_ports = testutils.clear_switch(self, async_port_map.keys(), async_logger) #step 2-1:controller sends set_async_request msg async_logger.info("Sending set_async_request") mask = 1 << ofp.OFPR_NO_MATCH request_set = create_set_async(pkt_in_mstr=mask) #print(request_set.show()) set_async_verify(self, request_set) #result 2-1: contrller sends msg successfully #no match default deal:drop; add flow entry to packet_in #step 3-1: install default mismatch flow entry ,action=packetin; testutils.set_table_config(self, config=ofp.OFPTC_TABLE_MISS_CONTROLLER) #send data to port for of_port in of_ports: async_logger.info("PKT IN test, port " + str(of_port)) pkt = testutils.simple_tcp_packet() self.dataplane.send(of_port, str(pkt)) #@todo Check for unexpected messages? testutils.packetin_verify(self, pkt) #print(response) #"verifying with set_async_request, switch will packet in" #step 1-2:clear all flow entries for unmatching rc = testutils.clear_switch(self, async_port_map.keys(), async_logger) #step 2-2:controller sends set_async_request msg async_logger.info("Sending set_async_request") mask = 0xffffffff ^ (1 << ofp.OFPR_NO_MATCH) request_set = create_set_async(pkt_in_mstr=mask) set_async_verify(self, request_set) #print("2-2 request_set"+request_set.show()) #result 2-2: contrller sends msg successfully #no match default deal:drop; add flow entry to packet_in #step 3-2: install default mismatch flow entry ,action=packetin; testutils.set_table_config(self, config=ofp.OFPTC_TABLE_MISS_CONTROLLER) #(response, _) = self.controller.poll(ofp.OFPT_PACKET_IN, 2) #send data to port for of_port in async_port_map.keys(): async_logger.info("PKT IN test, port " + str(of_port)) pkt = testutils.simple_tcp_packet() self.dataplane.send(of_port, str(pkt)) #@todo Check for unexpected messages? (response, _) = self.controller.poll(ofp.OFPT_PACKET_IN, 2) #print(response) self.assertTrue(response is None, 'Packet in message received unexpected') msg = create_set_async() set_async_verify(self, msg)