On Wed, Jan 07, 2015 at 04:54:41PM +0000, Han, Yunong wrote:
> I'm running ovs 2.1.2 on TP-link router (openwrt installed). I got the error 
> message Error OFPET_BAD_REQUEST OFPBRC_BUFFER_UNKNOWN from OFSwitchImpl.
> 
> 
> I checked the system log and found the messages:
> 
> 
> daemon.warn ovs-vswitchd: ovs|20991|pktbuf|WARN|attempt to reuse buffer 
> 00000000
> 
> daemon.notice ovs-vswitchd: ovs|20992|connmgr|INFO|dp0<->tcp:155.245.64.10: 
> sending OFPBRC_BUFFER_EMPTY error reply to OFPT_FLOW_MOD message
> 
> 
> I did some research and it seems that the error is caused by wrong buffer_id 
> ?  correct me if my understand is wrong.  Also, how can I fix this error ?   
> Thanks in advance.

### Q: My controller is getting errors about "buffers".  What's going on?

A: When a switch sends a packet to an OpenFlow controller using a
   "packet-in" message, it can also keep a copy of that packet in a
   "buffer", identified by a 32-bit integer "buffer_id".  There are
   two advantages to buffering.  First, when the controller wants to
   tell the switch to do something with the buffered packet (with a
   "packet-out" OpenFlow request), it does not need to send another
   copy of the packet back across the OpenFlow connection, which
   reduces the bandwidth cost of the connection and improves latency.
   This enables the second advantage: the switch can optionally send
   only the first part of the packet to the controller (assuming that
   the switch only needs to look at the first few bytes of the
   packet), further reducing bandwidth and improving latency.

   However, buffering introduces some issues of its own.  First, any
   switch has limited resources, so if the controller does not use a
   buffered packet, the switch has to decide how long to keep it
   buffered.  When many packets are sent to a controller and buffered,
   Open vSwitch can discard buffered packets that the controller has
   not used after as little as 5 seconds.  This means that
   controllers, if they make use of packet buffering, should use the
   buffered packets promptly.  (This includes sending a "packet-out"
   with no actions if the controller does not want to do anything with
   a buffered packet, to clear the packet buffer and effectively
   "drop" its packet.)

   Second, packet buffers are one-time-use, meaning that a controller
   cannot use a single packet buffer in two or more "packet-out"
   commands.  Open vSwitch will respond with an error to the second
   and subsequent "packet-out"s in such a case.

   Finally, a common error early in controller development is to try
   to use buffer_id 0 in a "packet-out" message as if 0 represented
   "no buffered packet".  This is incorrect usage: the buffer_id with
   this meaning is actually 0xffffffff.

   ovs-vswitchd(8) describes some details of Open vSwitch packet
   buffering that the OpenFlow specification requires implementations
   to document.
_______________________________________________
discuss mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/discuss

Reply via email to