Hi All,

I would like to propose and discuss the bond implementation in OpenVSwitch 
using Group tables below:

Design for Bond implementation in OVS:

Existing implementation (based on OpenFlow 1.0):

1. Creation of bond interface in OVS is done using add-bond command
* ovs-vsctl add-bond br0 bond1 eth0 eth1

* There are many configuration options for configuring bond interface like 
hashing, slave,delays etc


2. Creation flow rules treat the bond interface as any other physical port.
* Can be used as both Flow match field and Flow action field

* Very good abstraction so the applications are not worried about the actual 
type of port
* Consistent with other logical port creations like VxLAN etc


Approach 1:

1. Create a group entry (select type) with list of ports to be added to bond 
interface
2. Use the group action to transmit the packet on bond interface
3. For any flows that need to use the bond interface as the IN_PORT, we need to 
create multiple identical flows for each physical port in the bonded interface.
* Not recommended as it results in flow explosion.


Approach 2:

1. Create a group entry (select type) with list of ports to be added to bond 
interface
2. Use the group action to transmit the packet on bond interface
3. Create a bond interface as in current implementation or using group id
* ovs-vsctl add-bond br0 bond1 eth0 eth1 OR ovs-vsctl add-bond bra bond1 
group=<group_id>

4. Creation of flow rules to treat the bond interface as any other physical 
port.

Advantages of Approach2 over Approach 1:

* Bond interface could be used for both Flow Match fields (using logical port) 
and Flow Actions (using Group ID)
* Backward compatibility with existing implementation

It would be great if you can provide your comments on these different 
approaches.

Thanks,
Raghu

---------- Forwarded message ----------
From: Andy Zhou <az...@nicira.com<mailto:az...@nicira.com>>
Date: Mon, Jun 16, 2014 at 11:16 PM
Subject: Re: [ovs-dev] LAG support in OVS
To: Raghu Ram <raghuramga...@gmail.com<mailto:raghuramga...@gmail.com>>
Cc: "dev@openvswitch.org<mailto:dev@openvswitch.org>" 
<dev@openvswitch.org<mailto:dev@openvswitch.org>>


You are right.   Current bond implementation is based on earlier OVS
that only supports openflow version 1.0 and 1.1.
As you have pointed out, now that group is supported, it is feasible
to leverage the group facility to implement bond.

Do you have more detailed suggestions or implementation to contribute?




On Mon, Jun 16, 2014 at 10:30 AM, Raghu Ram 
<raghuramga...@gmail.com<mailto:raghuramga...@gmail.com>> wrote:
> Hi All,
>
> I have a query on LAG (Bonding) support in OpenVswitch.
>
> Is the LAG implementation in OVS not based on Group tables?
>
> I see that LAG (Bond) interface creation in OVS happens through non-OpenFlow
> means and not through an "select" group entry.
>
> Thanks,
> Raghu
>
> _______________________________________________
> dev mailing list
> dev@openvswitch.org<mailto:dev@openvswitch.org>
> http://openvswitch.org/mailman/listinfo/dev
>

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to