diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtLbHandler.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtLbHandler.java
index ba352eb..55b84f1 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtLbHandler.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtLbHandler.java
@@ -83,6 +83,7 @@
 import static org.onosproject.kubevirtnetworking.api.Constants.TUNNEL_DEFAULT_TABLE;
 import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.GENEVE;
 import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.GRE;
+import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.STT;
 import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.VXLAN;
 import static org.onosproject.kubevirtnetworking.util.KubevirtNetworkingUtil.buildGarpPacket;
 import static org.onosproject.kubevirtnetworking.util.KubevirtNetworkingUtil.externalPatchPortNum;
@@ -237,7 +238,7 @@
             setLbDownstreamRules(loadBalancer, router, gateway, true);
             setLbUpstreamRules(loadBalancer, router, gateway, true);
 
-            if (network.type() == VXLAN || network.type() == GENEVE || network.type() == GRE) {
+            if (network.type() == VXLAN || network.type() == GENEVE || network.type() == GRE || network.type() == STT) {
                 setLbDownStreamRulesForTunBridge(loadBalancer, gateway, true);
             }
         }
@@ -274,7 +275,8 @@
 
             setLbDownstreamRules(old, oldRouter, oldGateway, false);
             setLbUpstreamRules(old, oldRouter, oldGateway, false);
-            if (oldNetwork.type() == VXLAN || oldNetwork.type() == GENEVE || oldNetwork.type() == GRE) {
+            if (oldNetwork.type() == VXLAN || oldNetwork.type() == GENEVE ||
+                    oldNetwork.type() == GRE || oldNetwork.type() == STT) {
                 setLbDownStreamRulesForTunBridge(loadBalancer, oldGateway, false);
             }
             setBucketsToGroup(old, oldGateway, false);
@@ -310,7 +312,8 @@
             setBucketsToGroup(loadBalancer, gateway, true);
             setLbDownstreamRules(loadBalancer, router, gateway, true);
             setLbUpstreamRules(loadBalancer, router, gateway, true);
-            if (network.type() == VXLAN || network.type() == GENEVE || network.type() == GRE) {
+            if (network.type() == VXLAN || network.type() == GENEVE ||
+                    network.type() == GRE || network.type() == STT) {
                 setLbDownStreamRulesForTunBridge(loadBalancer, gateway, true);
             }
         }
@@ -350,7 +353,7 @@
             setBucketsToGroup(loadBalancer, gateway, false);
             setLbGroup(loadBalancer, gateway, false);
 
-            if (network.type() == VXLAN || network.type() == GENEVE || network.type() == GRE) {
+            if (network.type() == VXLAN || network.type() == GENEVE || network.type() == GRE || network.type() == STT) {
                 setLbDownStreamRulesForTunBridge(loadBalancer, gateway, false);
             }
         }
@@ -747,7 +750,8 @@
                 setLbUpstreamRules(loadBalancer, router, gatewayNode, true);
 
                 KubevirtNetwork network = networkService.network(loadBalancer.networkId());
-                if (network.type() == VXLAN || network.type() == GENEVE || network.type() == GRE) {
+                if (network.type() == VXLAN || network.type() == GENEVE ||
+                        network.type() == GRE || network.type() == STT) {
                     setLbDownStreamRulesForTunBridge(loadBalancer, gatewayNode, true);
                 }
 
@@ -781,7 +785,8 @@
                 setLbGroup(loadBalancer, gatewayNode, false);
 
                 KubevirtNetwork network = networkService.network(loadBalancer.networkId());
-                if (network.type() == VXLAN || network.type() == GENEVE || network.type() == GRE) {
+                if (network.type() == VXLAN || network.type() == GENEVE ||
+                        network.type() == GRE || network.type() == STT) {
                     setLbDownStreamRulesForTunBridge(loadBalancer, gatewayNode, false);
                 }
 
