Hi All,

I checked on wireshark. It seems the packet formed by nox/python-pyswitch is
fine. It updates the length in ofp_header. For a single flow mod - it sets
80B and and for 2 actions 88B and the flow_mod actions are displayed by
wireshark plugin as well. The plugin does not diplay the ofp_action_header
and only displays the ofp_action_output. (8 bytes)

There seems  to be some issue with the ofdatapath as pointed out by Srini.
Apart from multiple actions, I also tried single action (dynamically)  in
response to packet_in by setting the action to send to controller. Even in
this case, the ofdatapath crashes.

However,  I was able to send the packets to controller by omitting the
buffer_id in the response flow_mod packet.  This means, if I statically, set
up the flow rules, this  should work. The case where it does not work is -
when output action says - send to controller in response to a packet_in with
the buffer id.

If somebody has already fixed this issue, could you please send me a patch
or suggest me where do I need to modify the ofdatapath code to fix this.

Thanks a lot for help.

Regards,
Vishal

On Mon, May 9, 2011 at 10:30 AM, Srini Seetharaman <[email protected]>wrote:

> Hi all:
> This bug looks similar to the one Yi-Shou had on the NetFPGA platform.
> The problem happened in the NetFPGA platform when the first pkt that
> generated the pkt_in is acted upon by 2 actions. If let's say you
> don't act upon the first packet and drop it, and only insert a
> flow_mod without specifying the buf_id, then it used to work fine.
>
> Maybe Tatsuya can mail you his patch and you can give this a try.
>
> Thanks
> Srini.
>
> On Mon, May 9, 2011 at 6:59 AM, Vishal <[email protected]> wrote:
> > Hi Yiannis,
> >
> > Here is the portion of log:  For all good flow_mod actions= output:no.
> >
> > May 06 18:45:30|01904|poll_loop|DBG|[POLLIN] on fd 24: 0x805740c
> 0x8050c9b
> > 0x8053532 0x805356b 0x409ce7
> > May 06 18:45:30|01905|vconn|DBG|unix:/tmp/vconn-unix.16632.0: sent
> > (Success): packet_in (xid=0x0): total_len=62 in_port=3 data_len=62
> > buffer=0x000002c1
> >
> tcp,in_port=3,dl_vlan=0xffff,dl_vlan_pcp=0x00,dl_src=00:30:48:54:f3:9e,dl_dst=00:09:44:46:64:bc,nw_src=10.1.1.2,nw_dst=10.1.1.3,nw_tos=0x00,tp_src=8080,tp_dst=2729,
> >
> > May 06 18:45:30|01906|poll_loop|DBG|[POLLIN] on fd 36: 0x805a770
> 0x8050cc6
> > 0x8053532 0x805356b 0x409ce7
> > May 06 18:45:30|01907|vconn|DBG|unix:/tmp/vconn-unix.16632.0: received:
> > flow_mod
> >
> (xid=0x0):tcp,in_port=3,dl_vlan=0xffff,dl_vlan_pcp=0x00,dl_src=00:30:48:54:f3:9e,dl_dst=00:09:44:46:64:bc,nw_src=10.1.1.2,nw_dst=10.1.1.3,tp_src=8080,tp_dst=2729,
> > ADD: cookie:0 idle:5 hard:0 pri:32768 buf:0x2c1 flg:0x1
> > actions=CONTROLLER:128
> >
> > ofdatapath: lib/ofpbuf.c:168: ofpbuf_prealloc_headroom: Assertion `size
> <=
> > ofpbuf_headroom(b)' failed.
> > May 06 18:45:30|01908|fault|EMER|Caught signal 6.
> >   0x0805666f
> >   0x001e6400 (__kernel_sigreturn+0x0)
> >   0x00420e42 (abort+0x182)
> >   0x004168e8 (__assert_fail+0xf8)
> >   0x08059729
> >   0x0805974e (ofpbuf_push_uninit+0x1e)
> >   0x080507c7 (dp_output_control+0x57)
> >   0x080500c8
> >   0x08052204 (dp_run+0x3b4)
> >   0x08053525 (udatapath_cmd+0x595)
> >   0x0805356b (main+0x1b)
> >   0x00409ce7 (__libc_start_main+0xe7)
> >
> >
> > regards,
> > Vishal
> >
> > On Sun, May 8, 2011 at 4:26 PM, Vishal <[email protected]>
> wrote:
> >>
> >> Hi Yiannis,
> >>
> >> Yes. I do install the flow after the packet in.
> >>
> >> However, i check for the reason (ofp_packet_in_reason)  for packet in
> >> (ofp_packet_in).
> >> if the reason is OFPR_ACTION then I do not install the flow. if the
> reason
> >> is No match, then I install the rule with 2 actions. One to forward it
> to
> >> the destination and other to send it to the controller.
> >>
> >> I find that ofdatapath is crashing in lib/ofbuf.c. I can send the
> >> ofdatapath log as well as pcap capture file if required.
> >>
> >> Is multiple actions not supported in ofdatapath ?
> >>
> >> Thanks a lot for help.
> >>
> >> Regards,
> >> Vishal
> >>
> >> On Fri, May 6, 2011 at 7:31 PM, Yiannis Yiakoumis <
> [email protected]>
> >> wrote:
> >>>
> >>> (dropping nox-dev as this sounds cloer to an openflow related issue)
> >>> Hi Vishal,
> >>> Do you install the flow after a packet-in request? If so, make sure
> that
> >>> you install one only when a packet-in is due to no-match-found,
> otherwise
> >>> you'll end with a loop between the controller and the switch.
> >>> Regards,
> >>> Yiannis
> >>>
> >>> On Fri, May 6, 2011 at 3:23 PM, Vishal <[email protected]>
> wrote:
> >>>>
> >>>> Hello Murphy,
> >>>>
> >>>> I changed max_len  to 128 for the action -> send to
> >>>> openflow.OFPP_CONTROLLER and tried again.
> >>>>
> >>>> what i observe is : The switch sends a  Port Status Message
> >>>> (ofp_port_status) with OFPPR_MODIFY  with reason field set as "Some
> >>>> attribute of the port has changed".
> >>>>
> >>>> The Physical Port Header field shows Port #: Local (local openflow
> >>>> "port") and Port Name : tap1.
> >>>>
> >>>> After this message is received the connection between controller and
> >>>> switch is down.
> >>>>
> >>>> I suspect this change in port status happens because the controller
> >>>> sends -> off_action with OFPAT_OUTPUT --> with output port to
> Controller.
> >>>>
> >>>> This is how i started the ofdatapths-> ofdatapath
> >>>> punix:/var/run/dp0.sock -i eth0,eth2 --local-port=tap:tap1
> >>>>
> >>>> Is this a bug with openflow datapath or I am doing something wrong ?
> >>>>
> >>>> I would really appreciate any help in debugging this and making it
> work.
> >>>>
> >>>> Thanks a lot,
> >>>>
> >>>> Regards,
> >>>> Vishal
> >>>>
> >>>> On Thu, May 5, 2011 at 8:31 PM, Murphy McCauley <[email protected]>
> wrote:
> >>>>>
> >>>>> This looks fine to me on quick glance.  Even if it wasn't, I'd say it
> >>>>> shouldn't
> >>>>> crash ofdatapath.  You might want to bring it up on one of the
> OpenFlow
> >>>>> mailing lists like openflow-discuss (or maybe openflow-support now?).
> >>>>>
> >>>>> -- Murphy
> >>>>>
> >>>>> On Thursday, May 05, 2011 03:13:00 PM Vishal wrote:
> >>>>> > Hi,
> >>>>> >
> >>>>> > I want to duplicate a particular data flow to the controller.
> >>>>> >
> >>>>> > My set up includes nox based controller and userspace openflow
> >>>>> > switches
> >>>>> > (ofdatapath and ofprotocol)  running on ubuntu.
> >>>>> >
> >>>>> > In pyswitch.py, I set up the following 'action':
> >>>>> >
> >>>>> > actions = [[openflow.OFPAT_OUTPUT, [0, prt[0]]],
> >>>>> > *[openflow.OFPAT_OUTPUT,
> >>>>> > [0, openflow.OFPP_CONTROLLER]]*]
> >>>>> > install_datapath_flow(dpid, flow, CACHE_TIMEOUT,
> >>>>> >                                        openflow.OFP_FLOW_PERMANENT,
> >>>>> > actions, bufid, openflow.OFP_DEFAULT_PRIORITY, inport, buf)
> >>>>> >
> >>>>> > It seems this is not working and causes the ofdatapath process to
> >>>>> > crash.
> >>>>> >
> >>>>> > Is the above way correct way to apply multiple forwarding action
> for
> >>>>> > a
> >>>>> > matching flow?
> >>>>> >
> >>>>> > Does userspace openflow ofdatapath does not support multiple
> actions
> >>>>> > or
> >>>>> > action involving sending the flow to the controller.
> >>>>> >
> >>>>> > Thanks a lot for help,
> >>>>> >
> >>>>> > Regards,
> >>>>> > Vishal
> >>>>
> >>>>
> >>>> _______________________________________________
> >>>> openflow-discuss mailing list
> >>>> [email protected]
> >>>> https://mailman.stanford.edu/mailman/listinfo/openflow-discuss
> >>>>
> >>>
> >>
> >
> >
> > _______________________________________________
> > openflow-discuss mailing list
> > [email protected]
> > https://mailman.stanford.edu/mailman/listinfo/openflow-discuss
> >
> >
>
_______________________________________________
openflow-discuss mailing list
[email protected]
https://mailman.stanford.edu/mailman/listinfo/openflow-discuss

Reply via email to