Hi I am using the Ubuntu 12.04.5 LTS, Oracle VM VirtualBox and Virtual Machine Image (OVF format, 64-bit, Mininet 2.0).
*General* Name: Mininet Operating System:Ubuntu (32 bit) *System* Base Memory: 512 MB Boot order: Floppy, CD/DVD, Hard Disk Acceleration: PAE/NX *Display* Video Memory: 12 MB Remote Desktop Server: Disabled Video Capture: Disabled I am at the "Open Hub Code and Begin" step and the error i am getting is: INFO:openflow.of_01:[00-00-00-00-00-01 1] connected DEBUG:misc.of_tutorial:Controlling [00-00-00-00-00-01 1] ERROR:openflow.of_01:[00-00-00-00-00-01 1] OpenFlow Error: [00-00-00-00-00-01 1] Error: header: [00-00-00-00-00-01 1] Error: version: 1 [00-00-00-00-00-01 1] Error: type: 1 (OFPT_ERROR) [00-00-00-00-00-01 1] Error: length: 36 [00-00-00-00-00-01 1] Error: xid: 6 [00-00-00-00-00-01 1] Error: type: OFPET_BAD_REQUEST (1) [00-00-00-00-00-01 1] Error: code: OFPBRC_BUFFER_EMPTY (7) [00-00-00-00-00-01 1] Error: datalen: 24 *I have been using the POX code below:* from pox.core import core import pox.openflow.libopenflow_01 as of import re log = core.getLogger() class Tutorial (object): * """* * A Tutorial object is created for each switch that connects.* * A Connection object for that switch is passed to the __init__ function.* * """* def __init__ (self, connection): * # Keep track of the connection to the switch so that we can* * # send it messages!* self.connection = connection * # This binds our PacketIn event listener* connection.addListeners(self) * # Use this table to keep track of which ethernet address is on* * # which switch port (keys are MACs, values are ports).* self.mac_to_port = {} self.matrix={} *# this will keep track of the traffic matrix.* * # matrix[i][j]=number of times a packet from i went to j* def send_packet (self,buffer_id, raw_data, out_port, in_port): * """ Sends a packet out of the specified switch port. If buffer_id is a valid buffer on the switch, use that. Otherwise , send the raw data in a raw data. The "in_port" is the port number that the packet arrived on. Use OFPP_NONE if you are generating this packet """* msg = of.ofp_packet_out() msg.in_port = in_port if buffer_id != -1 and buffer_id is not None: * # We got a buffer ID from the switch, use that* msg.buffer_id = buffer_id else: * # No buffer ID from switch -- we got the raw data* if raw_data is None: * # No raw_data specified -- nothing to send!* return msg.data = raw_data action = of.ofp_action_output(port = out_port) msg.actions.append(action) * # Send message to switch* self.connection.send(msg) * # Send message to switch* self.connection.send(msg) def act_like_hub (self, packet, packet_in): * """ Implement hub-like behavior -- send all packets to all ports besides the input port. """ #Flood packet on all port* self.send_packet(packet_in.buffer_id, packet_in.data, of.OFPP_FLOOD, packet_in.in_port) * # Note that if we didn't get a valid buffer_id, a slightly better # implementation would check that we got the full data before # sending it (len(packet_in.data) should be == packet_in.total_len)).* def act_like_switch (self, packet, packet_in): * """ Implement switch-like behavior. """* * """ # DELETE THIS LINE TO START WORKING ON THIS (AND THE ONE BELOW!) # # Here's some psuedocode to start you off implementing a learning # switch. You'll need to rewrite it as real Python code.* * # Learn the port for the source MAC* self.mac_to_port ... <add or update entry> if the port associated with the destination MAC of the packet is known: * # Send packet out the associated port* self.resend_packet(packet_in, ...) *# Once you have the above working, try pushing a flow entry # instead of resending the packet (comment out the above and # uncomment and complete the below.)* log.debug("Installing flow...") * # Maybe the log statement should have source/destination/port?* * #msg = of.ofp_flow_mod() # ## Set fields to match received packet #msg.match = of.ofp_match.from_packet(packet) # #< Set other fields of flow_mod (timeouts? buffer_id?) > # #< Add an output action, and send -- similar to resend_packet() >* else: * # Flood the packet out everything but the input port # This part looks familiar, right?* self.resend_packet(packet_in, of.OFPP_ALL) * """ # DELETE THIS LINE TO START WORKING ON THIS # # Learn the port for the source MAC* self.mac_to_port[packet.src]=packet_in.in_port * # Add the entry to the traffic matrix* if self.mac_to_port.get(packet.dst)!=None: * # Send packet out the associated port* self.send_packet(packet_in.buffer_id, packet_in.data, self.mac_to_port[packet.dst],packet_in.in_port) else: * # Flood the packet out everything but the input port (same as hub)* self.send_packet(packet_in.buffer_id, packet_in.data, of.OFPP_FLOOD, packet_in.in_port) def _handle_PacketIn (self, event): * """ Handles packet in messages from the switch. ''"" * packet = event.parsed # This is the parsed packet data. if not packet.parsed: log.warning("Ignoring incomplete packet") return packet_in = event.ofp # The actual ofp_packet_in message. * # Comment out the following line and uncomment the one after # when starting the exercise.* self.act_like_hub(packet, packet_in) * #self.act_like_switch(packet, packet_in)* def launch (): * """ Starts the component """* def start_switch (event): log.debug("Controlling %s" % (event.connection,)) Tutorial(event.connection) core.openflow.addListenerByName("ConnectionUp", start_switch) Please do assist with the error, i am new to mininet. Regards Joshua Choma South Africa, University of Witwatersrand
_______________________________________________ openflow-discuss mailing list openflow-discuss@lists.stanford.edu https://mailman.stanford.edu/mailman/listinfo/openflow-discuss