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