Thank you so much. It worked. I just removed command_bucket_id parameter and it started working.
Best Regards, Ramzah Rehman On Tue, Jan 8, 2019 at 5:48 PM Artem Gromov <artyomgro...@gmail.com> wrote: > I guess you actually mean the code from your first letter with > ofproto_v1_5_parser.OFPBucket class: > > def send_group_mod(self, datapath): > ofp = datapath.ofproto > ofp_parser = datapath.ofproto_parser > > port = 1 > max_len = 2000 > actions = [ofp_parser.OFPActionOutput(port, max_len)] > > weight = 100 > #watch_port = ofproto_v1_5.OFPP_ANY > #watch_group = ofproto_v1_5.OFPQ_ALL > > bucket = datapath.ofproto_parser.OFPBucket(bucket_id=1, > actions=actions, properties=None, len_=32,action_array_len=None) > buckets = [bucket] > #buckets = [ofp_parser.OFPBucket(weight, watch_port, > watch_group,actions)] > > group_id = 1 > command_bucket_id = 1 > req = ofp_parser.OFPGroupMod(datapath, ofp.OFPGC_ADD, > ofp.OFPGT_SELECT, group_id, > command_bucket_id, buckets) > datapath.send_msg(req) > > Its important because struct ofp_bucket was changed dramatically in OFP > 1.5.x: > > https://www.opennetworking.org/wp-content/uploads/2014/10/openflow-switch-v1.5.1.pdf > (OFP 1.5.1 switch spec., page 115) > > Here is the OVS src line from which you've got the error: > https://github.com/openvswitch/ovs/blob/master/lib/ofp-group.c#L2195 > > So, you shouldn't set command_bucket_id in OFPGroupMod constructor (it > defaults to OFPG_BUCKET_ALL) (spec., page 115). > And after that you should read Ryu docs and OFP 1.5 specs to form correct > bucket properties with desired behavior (watch_port and watch_group) > > I hope this would help. > > > > Also, as a sidenotes: > - len_ and action_array_len arguments of OFPBucket.__init__ are not used > for now, and I hope will not be ever; > - you probably shouldn't use max_len for OFPActionOutput when you dont > forward packet to a controller. > > > > On Tue, Jan 8, 2019 at 2:33 PM Ramzah Rehman <ramzahreh...@gmail.com> > wrote: > >> I made sure OpenFLow1.5 is enabled in switch and I'm running ovs 2.10.90 >> now. I checked the ovs-vswitchd.log file and got. >> >> ovs-vswitchd.log: >> 2019-01-08T11:25:09.292Z|00182|rconn|INFO|br0<->tcp:10.0.0.6:6633: >> connected >> 2019-01-08T11:25:09.300Z|00183|fail_open|WARN|No longer in fail-open mode >> 2019-01-08T11:25:17.476Z|00184|ofp_group|WARN|group command bucket id (1) >> is out of range >> 2019-01-08T11:25:17.476Z|00185|connmgr|INFO|br0<->tcp:10.0.0.6:6633: >> sending OFPGMFC_BAD_BUCKET error reply to OFPT_GROUP_MOD message >> >> code: >> >> def send_group_mod(self, datapath): >> ofp = datapath.ofproto >> ofp_parser = datapath.ofproto_parser >> >> port = 1 >> max_len = 2000 >> actions = [ofp_parser.OFPActionOutput(port, max_len)] >> >> weight = 100 >> watch_port = 0 >> watch_group = 0 >> buckets = [ofp_parser.OFPBucket(weight, watch_port, watch_group, >> actions)] >> >> group_id = 1 >> command_bucket_id=1 >> req = ofp_parser.OFPGroupMod(datapath, ofp.OFPGC_ADD, >> ofp.OFPGT_SELECT, group_id, >> command_bucket_id, buckets) >> datapath.send_msg(req) >> >> Please let me know what's wrong here? I have tried bucket command id of 0 >> and hundred, nothing works. >> >> >> >> >> On Mon, Jan 7, 2019 at 12:52 PM IWAMOTO Toshihiro <iwam...@valinux.co.jp> >> wrote: >> >>> On Fri, 04 Jan 2019 20:32:14 +0900, >>> Ramzah Rehman wrote: >>> > I tried to add a Group Entry in my OVS version 2.8.6 switch via RYU >>> > controller using ofproto_v1_5 (switch has been configured to support >>> > OpenFlow 1.5 ). I found send_group_mod >>> > <https://ryu.readthedocs.io/en/latest/ofproto_v1_5_ref.html> function >>> here. >>> > I used the exact code to check if it's working but got this >>> > OFPGMFC_BAD_BUCKET(12) error. >>> >>> > Anyhow, since I had been initializing my OFPButcket wrongly, I >>> > modified my code as follows. This time, the actions list was being set >>> > properly in the bucket but still, I got bad_BUCKET(12) error. Please >>> > help. >>> > *Modified Code:* >>> > >>> > def send_group_mod(self, datapath): >>> > ofp = datapath.ofproto >>> > ofp_parser = datapath.ofproto_parser >>> > >>> > port = 1 >>> > max_len = 2000 >>> > actions = [ofp_parser.OFPActionOutput(port, max_len)] >>> > >>> > weight = 100 >>> > #watch_port = ofproto_v1_5.OFPP_ANY >>> > #watch_group = ofproto_v1_5.OFPQ_ALL >>> > >>> > bucket = datapath.ofproto_parser.OFPBucket(bucket_id=1, >>> > actions=actions, properties=None, len_=32,action_array_len=None) >>> > buckets = [bucket] >>> > #buckets = [ofp_parser.OFPBucket(weight, watch_port, >>> > watch_group,actions)] >>> > >>> > group_id = 1 >>> > command_bucket_id = 1 >>> > req = ofp_parser.OFPGroupMod(datapath, ofp.OFPGC_ADD, >>> > ofp.OFPGT_SELECT, group_id, >>> > command_bucket_id, buckets) >>> > datapath.send_msg(req) >>> > >>> > *Error:* >>> > >>> > EventOFPErrorMsg received. >>> > version=0x6, msg_type=0x1, msg_len=0x3c, xid=0x1d46ee73 >>> > `-- msg_type: OFPT_ERROR(1) >>> > OFPErrorMsg(type=0x6, code=0xc, >>> > >>> data=b'\x06\x0f\x00\x30\x1d\x46\xee\x73\x00\x00\x01\x00\x00\x00\x00\x01\x00\x18\x00\x00\x00\x00\x00\x01\x00\x18\x00\x10\x00\x00\x00\x01\x00\x00\x00\x10\x00\x00\x00\x01\x07\xd0\x00\x00\x00\x00\x00\x00') >>> > |-- type: OFPET_GROUP_MOD_FAILED(6) >>> > |-- code: OFPGMFC_BAD_BUCKET(12) >>> > `-- data: version=0x6, msg_type=0xf, msg_len=0x30, xid=0x1d46ee73 >>> > `-- msg_type: OFPT_GROUP_MOD(15) >>> >>> ovs-vswitchd should emit warn logs when returning those BAD_BUCKET >>> errors, if the verbose level is set appropriately. >>> >>> Please check ovs-vswitchd log level settings and its log file. >>> >>> -- >>> IWAMOTO Toshihiro >>> >>>
_______________________________________________ Ryu-devel mailing list Ryu-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ryu-devel