Hi Carlos,

For such purpose, OFPGT_SELECT is appropriate, I guess.

With the topology;

              +--------+             +--------+
              |   s1   |             |   s2   |
+----+        |      (port 2)---(port 2)      |        +----+
| h1 |---(port 1)      |             |      (port 1)---| h2 |
+----+        |      (port 3)---(port 3)      |        +----+
              |        |             |        |
              +--------+             +--------+


I can install groups and flows entries, then can ping between h1 and h2 with the
following app.


$ git diff
diff --git a/ryu/app/simple_switch_13.py b/ryu/app/simple_switch_13.py
index 06a5d0e..e1a5c3b 100644
--- a/ryu/app/simple_switch_13.py
+++ b/ryu/app/simple_switch_13.py
@@ -48,6 +48,30 @@ class SimpleSwitch13(app_manager.RyuApp):
                                           ofproto.OFPCML_NO_BUFFER)]
         self.add_flow(datapath, 0, match, actions)

+        buckets = [
+            parser.OFPBucket(
+                50, ofproto.OFPP_ANY, ofproto.OFPG_ANY,
+                [parser.OFPActionOutput(2)]),
+            parser.OFPBucket(
+                50, ofproto.OFPP_ANY, ofproto.OFPG_ANY,
+                [parser.OFPActionOutput(3)]),
+        ]
+        mod = parser.OFPGroupMod(
+            datapath, ofproto.OFPGC_ADD, ofproto.OFPGT_SELECT, 1, buckets)
+        datapath.send_msg(mod)
+
+        match = parser.OFPMatch(in_port=1)
+        actions = [parser.OFPActionGroup(1)]  # from host to switch
+        self.add_flow(datapath, 1, match, actions)
+
+        match = parser.OFPMatch(in_port=2)
+        actions = [parser.OFPActionOutput(1)]  # from switch to host
+        self.add_flow(datapath, 1, match, actions)
+
+        match = parser.OFPMatch(in_port=3)
+        actions = [parser.OFPActionOutput(1)]  # from switch to host
+        self.add_flow(datapath, 1, match, actions)
+
     def add_flow(self, datapath, priority, match, actions, buffer_id=None):
         ofproto = datapath.ofproto
         parser = datapath.ofproto_parser


I don't know what "using the group table with openflow 1.3 with no sucess"
means, but please confirm your group and flow table again.

Thanks,
Iwase


On 2018年03月23日 21:11, Jose Carlos Ferreira de Melo Junior wrote:
Hey Iwase,


Split means really divide the flow I dont know if would be like a load balancing (I think it is)

For example the image below




But I dont know if this would be possible using the group table.

2018-03-23 4:04 GMT-03:00 Iwase Yusuke <iwase.yusu...@gmail.com <mailto:iwase.yusu...@gmail.com>>:

    Hi Carlos,

    What does "split flows" exactly mean?

     > req = parser.OFPGroupMod(datapath, ofp.OFPFC_ADD, ofp.OFPGT_SELECT,
     >                          group_id, buckets)

    If you specify OFPGT_SELECT, switch will execute "one" bucket in the group 
and
    not copied like the port mirroring. If you intend to do port mirroring, you 
need
    to specify OFPGT_ALL. For other available group types, please refer to the
    OpenFlow spec and your switch's specification.

    Thanks,
    Iwase


    On 2018年03月21日 04:02, Jose Carlos Ferreira de Melo Junior wrote:

        Hi there,

        I know this topic was discussed before but I would like just a simple
        explanation about it.

        Because I am using the group table with openflow 1.3 with no sucess.


        My purpose is to split one flow in two flows and forward on port 3 and 4
        using the group table.

        My code is as follows:


        *def group_mod(self, datapath):*
        *        global ofp, _parser_, dp*
        *        port_1 = 4*
        *        queue_1 = _parser_.OFPActionSetQueue(0)*
        *        actions_1 = [queue_1, _parser_.OFPActionOutput(port_1)]*
        *
        *
        *
        *
        *        port_2 = 3*
        *        queue_2 = _parser_.OFPActionSetQueue(0)*
        *        actions_2 = [queue_2, _parser_.OFPActionOutput(port_2)]*
        *
        *
        *        weight_1 = 50*
        *        weight_2 = 50*
        *
        *
        *        watch_port = ofproto_v1_3.OFPP_ANY*
        *        watch_group = ofproto_v1_3.OFPQ_ALL*
        *
        *
        *        buckets = [*
        *                _parser_.OFPBucket(weight_1, watch_port, watch_group,
        actions_1),*
        *                _parser_.OFPBucket(weight_2, watch_port, watch_group,
        actions_2)]*
        *
        *
        *        group_id = 50*
        *
        *
        *        req = _parser_.OFPGroupMod(datapath, ofp.OFPFC_ADD,
        ofp.OFPGT_SELECT,*
        *                group_id, buckets)*
        *
        *
        *        datapath.send_msg(req)*
        *
        *
        *
        *
        *
        *
        Hope this is right.

        Could anyone help me with this issue?




-- Best regards,
        José Carlos Ferreira
        Msc student in Computer Science
        System and Network Analyst at PoP-PE/RNP


        
------------------------------------------------------------------------------
        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 <mailto:Ryu-devel@lists.sourceforge.net>
        https://lists.sourceforge.net/lists/listinfo/ryu-devel
        <https://lists.sourceforge.net/lists/listinfo/ryu-devel>




--
Best regards,
José Carlos Ferreira
Msc student in Computer Science
System and Network Analyst at PoP-PE/RNP


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