diff --git a/apps/openstacknetworking/switching/src/main/java/org/onosproject/openstacknetworking/switching/OpenstackSwitchingManager.java b/apps/openstacknetworking/switching/src/main/java/org/onosproject/openstacknetworking/switching/OpenstackSwitchingManager.java
index 5b6aabf..9abb442 100644
--- a/apps/openstacknetworking/switching/src/main/java/org/onosproject/openstacknetworking/switching/OpenstackSwitchingManager.java
+++ b/apps/openstacknetworking/switching/src/main/java/org/onosproject/openstacknetworking/switching/OpenstackSwitchingManager.java
@@ -43,6 +43,7 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.Objects;
 import java.util.Optional;
 
 import static org.onosproject.openstacknetworking.Constants.*;
@@ -92,7 +93,7 @@
     private void removeSwitchingRules(Host host) {
         setFlowRulesForTunnelTag(host, false);
         setFlowRulesForTrafficToSameCnode(host, false);
-        setFlowRulesForTrafficToDifferentCnode(host, false);
+        removeFlowRuleForVMsInDiffrentCnode(host);
 
         log.debug("Removed switching rule for {}", host);
     }
@@ -181,6 +182,21 @@
                 SWITCHING_RULE_PRIORITY, install);
     }
 
+    private void removeFlowRuleForVMsInDiffrentCnode(Host host) {
+        DeviceId deviceId = host.location().deviceId();
+        final boolean anyPortRemainedInSameCnode = hostService.getConnectedHosts(deviceId)
+                .stream()
+                .filter(this::isValidHost)
+                .anyMatch(h -> Objects.equals(getVni(h), getVni(host)));
+
+        getVmsInDifferentCnode(host).forEach(h -> {
+            setVxLanFlowRule(getVni(host), h.location().deviceId(), getIp(host), Ip4Address.valueOf(0), false);
+            if (!anyPortRemainedInSameCnode) {
+                setVxLanFlowRule(getVni(host), deviceId, getIp(h), Ip4Address.valueOf(0), false);
+            }
+        });
+    }
+
     @Override
     protected void hostDetected(Host host) {
         populateSwitchingRules(host);
