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 <[email protected]> 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 <[email protected]>
> 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel