Hi Tanvir,
> (1) How can I split a flow into multiple sub-flows defining the percentage of > each sub-flows compared to the flow? "weight" should be determined only when "OFPGT_SELECT" type. What does "split" exactly mean? To do round-robin or load-balance on two path, you should use "OFPGT_SELECT". > (2) I want to know the use, and application of OFPGT_INDRIECT, and OFPGT_FF. For the details of each OFPGT_* types, please refer to "5.6.1 Group Types" on the OpenFlow Spec 1.3.5. Thanks, Iwase On 2017年12月21日 17:54, [email protected] wrote:
Hi Thanks for your help. I have used ".OFPGT_ALL" in ".OFPGroupMod" message, and found that the flow is splitting. But there is a serious problem: if I set any value in "weight" field, except 0, then the flow does not split into multiple sub-flows. I have also noticed that if I set 0 in "weight" field, then the flow sends an equal number of packets in each sub-flows and the number of packets of a sub-flow is equivalent to the number of packets of the flow. I used the following code, ofproto = datapath.ofproto parser = datapath.ofproto_parser group_id = 1 action01 = [parser.OFPActionOutput(2)] action02 = [parser.OFPActionOutput(4)] weight01 = 0 weight02 = 0 watch_port = ofproto_v1_3.OFPP_ANY watch_group = ofproto_v1_3.OFPQ_ALL bucket01 = parser.OFPBucket(weight01, watch_port, watch_group, action01) bucket02 = parser.OFPBucket(weight02, watch_port, watch_group, action02) req = parser.OFPGroupMod(datapath, ofproto.OFPFC_ADD, ofproto.OFPGT_ALL, group_id=1, buckets=[bucket01, bucket02]) # (2) ofproto.OFPGT_SELECT --> ofproto.OFPGT_ALL datapath.send_msg(req) (1) How can I split a flow into multiple sub-flows defining the percentage of each sub-flows compared to the flow? (2) I want to know the use, and application of OFPGT_INDRIECT, and OFPGT_FF. Thanks, -Tanvir ________________________________________ From: Iwase Yusuke <[email protected]> Sent: Thursday, 21 December 2017 10:50 AM To: Ul Huque, Tanvir (Data61, Eveleigh ATP) Cc: [email protected] Subject: Re: [Ryu-devel] splitting a flow into a number of flows Hi, > buckets = [parser.OFPBucket(weight01, watch_port, watch_group, > action01), parser.OFPBucket(weight02, watch_port, watch_group, action02)] > req = parser.OFPGroupMod(datapath, ofproto.OFPFC_ADD, > ofproto.OFPGT_SELECT, group_id, buckets) How about using ofproto.OFPGT_ALL instead of ofproto.OFPGT_SELECT? Please refer to "5.6.1 Group Types" on OpenFlow Spec 1.3.5 for the difference between the types of group action. Thanks, Iwase On 2017年12月19日 18:58, [email protected] wrote:Hi I want to split a flow into two flows, e.g., a flow entering into switch 1 will be splitted into two flows going to switch 3 and switch 5. ________________ switch 3_____________ | | h1------switch 1 switch 4-------- h2 |_________________ switch 5____________| Now, to split the flow I have used the following code, however, I have found that flow is not splitting and passing through only one link without sending any packets in other link. 1. Could you please help me identifying the problem? 2. Could you please share necessary resources/links/guidelines of load sharing in SDN using RYU so that I can have workable implementation? #....................................................... send_group_mod ..................................................... # applicable in Swicth-1 (shared switch/AP) def group_mod01(self, datapath): ofproto = datapath.ofproto parser = datapath.ofproto_parser group_id = 1 action01 = [parser.OFPActionOutput(2)] # for switch 3 action02 = [parser.OFPActionOutput(4)] # for switch 5 weight01 = 50 weight02 = 50 watch_port = ofproto_v1_3.OFPP_ANY watch_group = ofproto_v1_3.OFPQ_ALL buckets = [parser.OFPBucket(weight01, watch_port, watch_group, action01), parser.OFPBucket(weight02, watch_port, watch_group, action02)] req = parser.OFPGroupMod(datapath, ofproto.OFPFC_ADD, ofproto.OFPGT_SELECT, group_id, buckets) datapath.send_msg(req) #....................................................... switch_in_handler ................................................... # pro-active rule in Switch 1 @set_ev_cls(ofp_event.EventOFPSwitchFeatures, CONFIG_DISPATCHER) def switch_features_handler(self, ev): datapath = ev.msg.datapath dpid = datapath.id ofproto = datapath.ofproto parser = datapath.ofproto_parser if datapath.id == 1: self.group_mod01(datapath) actions = [parser.OFPActionSetField(ip_dscp = 1), parser.OFPActionGroup(group_id = 1)] priority = 100 match = parser.OFPMatch(in_port= 1, eth_type=0x0800, ipv4_src='10.0.0.1', ipv4_dst='10.0.0.2', ip_proto=17, udp_dst=5555 ) self.add_flow(datapath, priority , match, actions) ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Ryu-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ryu-devel------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Ryu-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ryu-devel
------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Ryu-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ryu-devel
