On Thu, May 18, 2017 at 04:24:18PM -0700, Piyush Agarwal wrote:
> Hi,
> From the FAQ:
> 
> Q: It looks like each of the interfaces in my bonded port shows up
>    as an individual OpenFlow port.  Is that right?
> 
> A: Yes, Open vSwitch makes individual bond interfaces visible as
>    OpenFlow ports, rather than the bond as a whole.  The interfaces
>    are treated together as a bond for only a few purposes:
> 
>        - *Sending a packet to the OFPP_NORMAL port.  (When an OpenFlow*
> *         controller is not configured, this happens implicitly to*
> *         every packet.)*
> 
>        - The "autopath" Nicira extension action.  However, "autopath"
>          is deprecated and scheduled for removal in February 2013.
> 
>        - Mirrors configured for output to a bonded port.
> 
> I have some questions based on this. This is what I am trying to achieve: I
> have a two-interface bond port in OVS that I'd like balance-slb
> load-balancing.
> Let's say my OVS bridge is:
> 
> $ sudo ovs-vsctl show
> bdb92ad6-3dc3-40c0-be03-714c88d1ac27
>     Bridge "testbr0"
>         Port "bond0"
>             Interface "veth1"
>             Interface "veth2"
>         Port "testbr0"
>             Interface "testbr0"
>                 type: internal
>         Port "veth10"
>             Interface "veth10"
>     ovs_version: "2.5.0"
> 
> 
> $ sudo ovs-ofctl -OOpenflow13 show testbr0
> OFPT_FEATURES_REPLY (OF1.3) (xid=0x2): dpid:0000769ca595b645
> n_tables:254, n_buffers:256
> capabilities: FLOW_STATS TABLE_STATS PORT_STATS GROUP_STATS QUEUE_STATS
> OFPST_PORT_DESC reply (OF1.3) (xid=0x3):
>  *1(veth1)*: addr:ae:c8:18:c7:8f:3e
>      config:     0
>      state:      0
>      current:    10GB-FD COPPER
>      speed: 10000 Mbps now, 0 Mbps max
>  *2(veth2)*: addr:d2:26:71:c0:c3:a5
>      config:     0
>      state:      0
>      current:    10GB-FD COPPER
>      speed: 10000 Mbps now, 0 Mbps max
>  *10(veth10)*: addr:ae:fd:60:a7:51:2c
>      config:     0
>      state:      0
>      current:    10GB-FD COPPER
>      speed: 10000 Mbps now, 0 Mbps max
>  LOCAL(testbr0): addr:76:9c:a5:95:b6:45
>      config:     PORT_DOWN
>      state:      LINK_DOWN
>      speed: 0 Mbps now, 0 Mbps max
> OFPT_GET_CONFIG_REPLY (OF1.3) (xid=0x5): frags=normal miss_send_len=0
> 
> Sure enough the bond did not get an OF port number, but the member
> interfaces did. What I want to do is this: for packets coming from veth10,
> I want that traffic to be load-balanced across bond0 (comprised of veth1
> and veth2).
> 
> 1) Given the bond port gets no openflow port number, this looks like
> something I can't do with an openflow controller at all. Right?

An OpenFlow controller can output a packet to "NORMAL", which honors
bond configuration.  With this port setup, that's likely to do what you
want.

> 2) If I am to use the "normal" non-openflow pipeline,  it seems like the
> flow that specifies action as OFPP_NORMAL has to be the last flow? Said
> another way, I cannot match certain packets (coming on veth10) and set the
> action to be OFPP_NORMAL, can I?

I don't know what the "last flow" is.

You can use "NORMAL" as the action for any packets you like.

> Are there are any guides/blog posts that help explain how to use
> OFPP_NORMAL action, I couldn't find any practical example of this.

Well, suppose you want to switch TCP and ARP packets coming in veth10,
balancing them across veth1 and veth2, and drop all the other packets
that come in on veth10.  You could use a flow table like this:

priority=50, in_port=10, tcp, actions=normal
priority=50, in_port=10, arp, actions=normal
priority=40, in_port=10, actions=drop

You'd probably also want a flow to handle packets coming in on the other
ports, too:
priority=0, actions=normal
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to