I'm aware of two possibilities.

The first is that your switch is out of buffer space/IDs.  This can happen 
particularly if you are ignoring packet-ins in your controller.  You may be 
better off sending a packet-out that references the buffer_id but has no 
actions; this way the switch will deallocate the buffer (various examples in 
POX do this; e.g., l2_learning, I believe).

The second is that there's always a size limit of how much of a packet the 
switch will send to the controller.  There's a single limit for packets which 
miss the table entirely, and every send-to-controller action has its own limit. 
 If a packet is larger than this limit, the controller buffers the packet 
locally and sends a truncated version to the controller.  However, if the 
packet is smaller than the limit, I believe OVS will simply send the entire 
packet to the controller *and not buffer it*.  In POX, the "maximum length" for 
output actions to send to the controller is the full size of the packet, but 
you can set it to be smaller.

I'll also note that POX's packet_out and flow_mod have special cases to make it 
easier to deal with the fact that you may have either case (a buffer ID or a 
full packet).  The flow_mod one in particular isn't always ideal, but they work 
a lot of the time.

-- Murphy

On Nov 19, 2013, at 6:08 AM, Nan Zhu <zhunanmcg...@gmail.com> wrote:

> Hi, all
> 
> I'm developing some controller with POX, 
> 
> When I test it with mininet (--switch ovsk), I found that I will receive some 
> packet_in which has a buffer_id with the value of None?
> 
> Anyone had this problem before? obviously it is caused by my controller, I 
> used other code to test, this type of packet never appear
> 
> What can be the reason of that?
> 
> Best,
> 
> Nan
> 
> 

Reply via email to