diff --git a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/Constants.java b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/Constants.java
index c0afe45..599a615 100644
--- a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/Constants.java
+++ b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/Constants.java
@@ -51,6 +51,11 @@
     public static final int FORWARDING_TABLE = 80;
     public static final int ERROR_TABLE = 100;
 
+    // tenant integration bridge flow table index
+    public static final int TENANT_INBOUND_TABLE = 0;
+    public static final int TENANT_DHCP_TABLE = 5;
+    public static final int TENANT_FORWARDING_TABLE = 80;
+
     // flow rule priority
     public static final int PRIORITY_SWITCHING_RULE = 30000;
     public static final int PRIORITY_DHCP_RULE = 42000;
diff --git a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtNetwork.java b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtNetwork.java
index 79c535d..6c0bf8b 100644
--- a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtNetwork.java
+++ b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtNetwork.java
@@ -16,8 +16,10 @@
 package org.onosproject.kubevirtnetworking.api;
 
 import com.google.common.base.MoreObjects;
+import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableSet;
 import org.onlab.packet.IpAddress;
+import org.onosproject.net.DeviceId;
 
 import java.util.HashSet;
 import java.util.Objects;
@@ -25,6 +27,9 @@
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.FLAT;
+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.VXLAN;
 
 /**
  * Default implementation class of kubevirt network.
@@ -32,6 +37,8 @@
 public final class DefaultKubevirtNetwork implements KubevirtNetwork {
 
     private static final String NOT_NULL_MSG = "Network % cannot be null";
+    private static final String TENANT_BRIDGE_PREFIX = "br-int-";
+    private static final String OF_PREFIX = "of:";
 
     private final String networkId;
     private final Type type;
@@ -133,6 +140,25 @@
     }
 
     @Override
+    public String tenantBridgeName() {
+        if (type == VXLAN || type == GRE || type == GENEVE) {
+            return TENANT_BRIDGE_PREFIX + segmentIdHex(segmentId);
+        }
+        return null;
+    }
+
+    @Override
+    public DeviceId tenantDeviceId(String hostname) {
+        if (type == VXLAN || type == GRE || type == GENEVE) {
+            String dpid = genDpidFromName(tenantBridgeName() + "-" + hostname);
+            if (dpid != null) {
+                return DeviceId.deviceId(dpid);
+            }
+        }
+        return null;
+    }
+
+    @Override
     public boolean equals(Object o) {
         if (this == o) {
             return true;
@@ -171,6 +197,20 @@
                 .toString();
     }
 
+    private String segmentIdHex(String segIdStr) {
+        int segId = Integer.parseInt(segIdStr);
+        return String.format("%06x", segId).toLowerCase();
+    }
+
+    private String genDpidFromName(String name) {
+        if (name != null) {
+            String hexString = Integer.toHexString(name.hashCode());
+            return OF_PREFIX + Strings.padStart(hexString, 16, '0');
+        }
+
+        return null;
+    }
+
     /**
      * Returns new builder instance.
      *
diff --git a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/KubevirtNetwork.java b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/KubevirtNetwork.java
index 97b2286..3c99544 100644
--- a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/KubevirtNetwork.java
+++ b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/KubevirtNetwork.java
@@ -16,6 +16,7 @@
 package org.onosproject.kubevirtnetworking.api;
 
 import org.onlab.packet.IpAddress;
+import org.onosproject.net.DeviceId;
 
 import java.util.Set;
 
@@ -121,6 +122,22 @@
     Set<IpAddress> dnses();
 
     /**
+     * Returns the tenant integration bridge name in case the bridge type
+     * is VXLAN/GRE/GENEVE.
+     *
+     * @return tunnel bridge name
+     */
+    String tenantBridgeName();
+
+    /**
+     * Returns the tenant integration bridge's device identifier.
+     *
+     * @param hostname kubevirt node hostname
+     * @return device identifier
+     */
+    DeviceId tenantDeviceId(String hostname);
+
+    /**
      * Builder of new network.
      */
     interface Builder {
