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

Reply via email to