I've applied this to master and branch-2.9.

On Wed, Feb 28, 2018 at 1:22 PM, Ben Pfaff <b...@ovn.org> wrote:
> Russell, are you the right one to consider applying this?
>
> On Wed, Feb 28, 2018 at 12:32:23PM +0000, Vishal Deep Ajmera wrote:
>> Hi,
>>
>> If the patch looks fine I request to get this cherry-pick on 2.9 branch as 
>> well.
>>
>> Warm Regards,
>> Vishal Ajmera
>>
>> -----Original Message-----
>> From: Vishal Deep Ajmera
>> Sent: Friday, February 23, 2018 12:49 AM
>> To: d...@openvswitch.org
>> Cc: Vishal Deep Ajmera <vishal.deep.ajm...@ericsson.com>; Flavio Leitner 
>> <f...@sysclose.org>
>> Subject: [PATCH] rhel: Avoid losing bridge configuration after adding DPDK 
>> ports
>>
>> Whenever a DPDK port is added to or deleted from an OVS bridge, the bridge
>> interface is reconfigured with the lowest MAC address among the connected 
>> DPDK
>> ports. When changing the MAC address, OVS performs a sequences of events
>> UP -> DOWN -> UP on the bridge interface. In deployments of OVS in RHEL
>> distribution this results in loosing Linux networking configuration attached 
>> to
>> the bridge interface (e.g. static routes).
>>
>> This patch changes the interface configuration scripts used in a RHEL 
>> deployment
>> to trigger post-up operations on the bridge device after a change of MAC 
>> address.
>>
>> Signed-off-by: Vishal Deep Ajmera <vishal.deep.ajm...@ericsson.com>
>> Signed-off-by: Flavio Leitner <f...@sysclose.org>
>>
>> ---
>>  rhel/README.RHEL.rst                        |  5 +++++
>>  rhel/etc_sysconfig_network-scripts_ifup-ovs | 16 ++++++++++++++++
>>  2 files changed, 21 insertions(+)
>>
>> diff --git a/rhel/README.RHEL.rst b/rhel/README.RHEL.rst
>> index f3d2942..1cd2065 100644
>> --- a/rhel/README.RHEL.rst
>> +++ b/rhel/README.RHEL.rst
>> @@ -93,6 +93,11 @@ Note
>>    answers: File exists`` printed on the console. This comes from ifup-eth
>>    trying to add zeroconf route multiple times and is harmless.
>>
>> +* ``ifup`` on OVSDPDKPort or OVSDPDKBond may result in change of bridge mac 
>> address.
>> +  Since OVS changes the device state to DOWN before changing its mac 
>> address this
>> +  result in loss of bridge configuration (e.g. routes). ``ifup-ovs`` 
>> perform post-up
>> +  operation on the bridge again to restore configuration.
>> +
>>  Examples
>>  --------
>>
>> diff --git a/rhel/etc_sysconfig_network-scripts_ifup-ovs 
>> b/rhel/etc_sysconfig_network-scripts_ifup-ovs
>> index b95220a..1c65f13 100755
>> --- a/rhel/etc_sysconfig_network-scripts_ifup-ovs
>> +++ b/rhel/etc_sysconfig_network-scripts_ifup-ovs
>> @@ -167,10 +167,18 @@ case "$TYPE" in
>>               ;;
>>       OVSDPDKPort)
>>               ifup_ovs_bridge
>> +             BRIDGE_MAC_ORIG=$(get_hwaddr $OVS_BRIDGE)
>>               ovs-vsctl -t ${TIMEOUT} \
>>                       -- --if-exists del-port "$OVS_BRIDGE" "$DEVICE" \
>>                       -- add-port "$OVS_BRIDGE" "$DEVICE" $OVS_OPTIONS \
>>                       -- set Interface "$DEVICE" type=dpdk ${OVS_EXTRA+-- 
>> $OVS_EXTRA}
>> +             BRIDGE_MAC=$(get_hwaddr $OVS_BRIDGE)
>> +             # The bridge may change its MAC to be the lower one among all 
>> its
>> +             # ports. If that happens, bridge configuration (e.g. routes) 
>> will
>> +             # be lost. Restore the post-up bridge configuration again.
>> +             if [ "$BRIDGE_MAC_ORIG" != "$BRIDGE_MAC" ]; then
>> +                     ${OTHERSCRIPT} "$OVS_BRIDGE"
>> +             fi
>>               ;;
>>       OVSDPDKRPort)
>>               ifup_ovs_bridge
>> @@ -196,12 +204,20 @@ case "$TYPE" in
>>               ;;
>>       OVSDPDKBond)
>>               ifup_ovs_bridge
>> +             BRIDGE_MAC_ORIG=$(get_hwaddr $OVS_BRIDGE)
>>               for _iface in $BOND_IFACES; do
>>                       IFACE_TYPES="${IFACE_TYPES} -- set interface ${_iface} 
>> type=dpdk"
>>               done
>>               ovs-vsctl -t ${TIMEOUT} \
>>                       -- --if-exists del-port "$OVS_BRIDGE" "$DEVICE" \
>>                       -- add-bond "$OVS_BRIDGE" "$DEVICE" ${BOND_IFACES} 
>> $OVS_OPTIONS ${IFACE_TYPES} ${OVS_EXTRA+-- $OVS_EXTRA}
>> +             BRIDGE_MAC=$(get_hwaddr $OVS_BRIDGE)
>> +             # The bridge may change its MAC to be the lower one among all 
>> its
>> +             # ports. If that happens, bridge configuration (e.g. routes) 
>> will
>> +             # be lost. Restore the post-up bridge configuration again.
>> +             if [ "$BRIDGE_MAC_ORIG" != "$BRIDGE_MAC" ]; then
>> +                     ${OTHERSCRIPT} "$OVS_BRIDGE"
>> +             fi
>>               ;;
>>       *)
>>               echo $"Invalid OVS interface type $TYPE"
>> --
>> 1.9.1
>>
>> _______________________________________________
>> dev mailing list
>> d...@openvswitch.org
>> https://mail.openvswitch.org/mailman/listinfo/ovs-dev



-- 
Russell Bryant
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to