"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".


Thanks for your reply :)  My response is given below,

                   ________________ switch 3_____________
                   |                                                            
          |
                   |                                                            
          |
 h1------switch 1                                                            
switch 4-------- h2
                   |_________________ switch 5___________|

For the above topology, I used the following code in which a flow is supposed 
to be split into two equal sub-flows in Switch 1 (a flow entering into switch 1 
will be divided equally to pass through switch 3 and switch 5). However, I have 
found that because of using "ofproto.OFPGT_SELECT", the controller sends the 
flow in one of the links between two links (either through switch 3 or switch 
5). How can I divide a flow into two sub-flows passing through two links? 

          group_id = 1
          action01 = [parser.OFPActionOutput(2)]
          action02 = [parser.OFPActionOutput(4)]
          weight01 = 50
          weight02 = 50
          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_SELECT, group_id=1, buckets=[bucket01, bucket02])    
          datapath.send_msg(req)


To do round-robin, what I have to change the above code?

Thanks,
-Tanvir  
________________________________________
From: Iwase Yusuke <iwase.yusu...@gmail.com>
Sent: Monday, 25 December 2017 6:08 PM
To: Ul Huque, Tanvir (Data61, Eveleigh ATP)
Cc: ryu-devel@lists.sourceforge.net
Subject: Re: [Ryu-devel] splitting a flow into a number of flows

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, tanvir.ulhu...@data61.csiro.au 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 <iwase.yusu...@gmail.com>
> Sent: Thursday, 21 December 2017 10:50 AM
> To: Ul Huque, Tanvir (Data61, Eveleigh ATP)
> Cc: ryu-devel@lists.sourceforge.net
> 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, tanvir.ulhu...@data61.csiro.au 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
>> Ryu-devel@lists.sourceforge.net
>> 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
> Ryu-devel@lists.sourceforge.net
> 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
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to