[pox-dev] buffer_id is None?

Murphy McCauley murphy.mccauley at gmail.com
Tue Nov 19 11:04:42 PST 2013


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 <zhunanmcgill at 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
> 
> 




More information about the pox-dev mailing list