diff --git a/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/Constants.java b/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/Constants.java
index 09451dd..f4ffd0b 100644
--- a/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/Constants.java
+++ b/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/Constants.java
@@ -32,5 +32,17 @@
     public static final String GRE = "gre";
     public static final String GENEVE = "geneve";
 
+    public static final String INTEGRATION_BRIDGE = "br-int";
+    public static final String TUNNEL_BRIDGE = "br-tun";
+
+    public static final String INTEGRATION_TO_TUNNEL = "int-to-tun";
+    public static final String TUNNEL_TO_INTEGRATION = "tun-to-int";
+
+    public static final String BRIDGE_PREFIX = "br-";
+    public static final String INTEGRATION_TO_PHYSICAL_PREFIX = "int-to-";
+    public static final String PHYSICAL_TO_INTEGRATION_SUFFIX = "-to-int";
+
+    public static final String FLOW_KEY = "flow";
+
     public static final String DEFAULT_CLUSTER_NAME = "default";
 }
diff --git a/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/DefaultKubevirtNode.java b/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/DefaultKubevirtNode.java
index 3815ff3..246d6c4 100644
--- a/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/DefaultKubevirtNode.java
+++ b/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/DefaultKubevirtNode.java
@@ -39,6 +39,7 @@
     private final String hostname;
     private final Type type;
     private final DeviceId intgBridge;
+    private final DeviceId tunBridge;
     private final IpAddress managementIp;
     private final IpAddress dataIp;
     private final KubevirtNodeState state;
@@ -51,19 +52,22 @@
      * @param hostname          hostname
      * @param type              node type
      * @param intgBridge        integration bridge
+     * @param tunBridge         tunnel bridge
      * @param managementIp      management IP address
      * @param dataIp            data IP address
      * @param state             node state
      * @param phyIntfs          physical interfaces
      */
     protected DefaultKubevirtNode(String clusterName, String hostname, Type type,
-                                  DeviceId intgBridge, IpAddress managementIp,
-                                  IpAddress dataIp, KubevirtNodeState state,
+                                  DeviceId intgBridge, DeviceId tunBridge,
+                                  IpAddress managementIp, IpAddress dataIp,
+                                  KubevirtNodeState state,
                                   Collection<KubevirtPhyInterface> phyIntfs) {
         this.clusterName = clusterName;
         this.hostname = hostname;
         this.type = type;
         this.intgBridge = intgBridge;
+        this.tunBridge = tunBridge;
         this.managementIp = managementIp;
         this.dataIp = dataIp;
         this.state = state;
@@ -96,6 +100,11 @@
     }
 
     @Override
+    public DeviceId tunBridge() {
+        return tunBridge;
+    }
+
+    @Override
     public IpAddress managementIp() {
         return managementIp;
     }
@@ -117,6 +126,7 @@
                 .clusterName(clusterName)
                 .type(type)
                 .intgBridge(intgBridge)
+                .tunBridge(tunBridge)
                 .managementIp(managementIp)
                 .dataIp(dataIp)
                 .state(newState)
@@ -131,6 +141,22 @@
                 .clusterName(clusterName)
                 .type(type)
                 .intgBridge(deviceId)
+                .tunBridge(tunBridge)
+                .managementIp(managementIp)
+                .dataIp(dataIp)
+                .state(state)
+                .phyIntfs(phyIntfs)
+                .build();
+    }
+
+    @Override
+    public KubevirtNode updateTunBridge(DeviceId deviceId) {
+        return new Builder()
+                .hostname(hostname)
+                .clusterName(clusterName)
+                .type(type)
+                .intgBridge(intgBridge)
+                .tunBridge(deviceId)
                 .managementIp(managementIp)
                 .dataIp(dataIp)
                 .state(state)
@@ -168,9 +194,11 @@
                 .clusterName(node.clusterName())
                 .type(node.type())
                 .intgBridge(node.intgBridge())
+                .tunBridge(node.tunBridge())
                 .managementIp(node.managementIp())
                 .dataIp(node.dataIp())
-                .state(node.state());
+                .state(node.state())
+                .phyIntfs(node.phyIntfs());
     }
 
     @Override
@@ -186,13 +214,14 @@
                 hostname.equals(that.hostname) &&
                 type == that.type &&
                 intgBridge.equals(that.intgBridge) &&
+                tunBridge.equals(that.tunBridge) &&
                 managementIp.equals(that.managementIp) &&
                 dataIp.equals(that.dataIp);
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(clusterName, hostname, type, intgBridge,
+        return Objects.hash(clusterName, hostname, type, intgBridge, tunBridge,
                 managementIp, dataIp);
     }
 
@@ -203,9 +232,11 @@
                 .add("hostname", hostname)
                 .add("type", type)
                 .add("intgBridge", intgBridge)
+                .add("tunBridge", tunBridge)
                 .add("managementIp", managementIp)
                 .add("dataIp", dataIp)
                 .add("state", state)
+                .add("phyIntfs", phyIntfs)
                 .toString();
     }
 
@@ -215,6 +246,7 @@
         private String hostname;
         private Type type;
         private DeviceId intgBridge;
+        private DeviceId tunBridge;
         private IpAddress managementIp;
         private IpAddress dataIp;
         private KubevirtNodeState state;
@@ -240,6 +272,7 @@
                     hostname,
                     type,
                     intgBridge,
+                    tunBridge,
                     managementIp,
                     dataIp,
                     state,
@@ -272,6 +305,12 @@
         }
 
         @Override
+        public Builder tunBridge(DeviceId deviceId) {
+            this.tunBridge = deviceId;
+            return this;
+        }
+
+        @Override
         public Builder managementIp(IpAddress managementIp) {
             this.managementIp = managementIp;
             return this;
diff --git a/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/KubevirtNode.java b/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/KubevirtNode.java
index 402d0f9..2cbb471 100644
--- a/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/KubevirtNode.java
+++ b/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/KubevirtNode.java
@@ -76,6 +76,13 @@
     DeviceId intgBridge();
 
     /**
+     * Returns the device ID of the tunnel bridge at the node.
+     *
+     * @return device id
+     */
+    DeviceId tunBridge();
+
+    /**
      * Returns the management network IP address of the node.
      *
      * @return ip address
@@ -113,6 +120,14 @@
     KubevirtNode updateIntgBridge(DeviceId deviceId);
 
     /**
+     * Returns new kubevirt node instance with given tunnel bridge.
+     *
+     * @param deviceId  tunnel bridge device ID
+     * @return updated kubevirt node
+     */
+    KubevirtNode updateTunBridge(DeviceId deviceId);
+
+    /**
      * Returns a collection of physical interfaces.
      *
      * @return physical interfaces
@@ -163,6 +178,14 @@
         KubevirtNode.Builder intgBridge(DeviceId deviceId);
 
         /**
+         * Returns kubevirt node builder with supplied tunnel bridge name.
+         *
+         * @param deviceId tunnel bridge device ID
+         * @return kubevirt node builder
+         */
+        KubevirtNode.Builder tunBridge(DeviceId deviceId);
+
+        /**
          * Returns kubevirt node builder with supplied management IP address.
          *
          * @param managementIp management IP address
diff --git a/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/KubevirtNodeHandler.java b/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/KubevirtNodeHandler.java
index d3833c1..e1b795a 100644
--- a/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/KubevirtNodeHandler.java
+++ b/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/KubevirtNodeHandler.java
@@ -19,4 +19,42 @@
  * Service handling KubeVirt node state.
  */
 public interface KubevirtNodeHandler {
+
+    /**
+     * Processes the given node for init state.
+     * It creates required bridges on OVS by referring to node type.
+     *
+     * @param node kubevirt node
+     */
+    void processInitState(KubevirtNode node);
+
+    /**
+     * Processes the given node for device created state.
+     * It creates required ports on the bridges based on the node type.
+     *
+     * @param node kubevirt node
+     */
+    void processDeviceCreatedState(KubevirtNode node);
+
+    /**
+     * Processes the given node for complete state.
+     * It performs post-init jobs for the complete node.
+     *
+     * @param node kubevirt node
+     */
+    void processCompleteState(KubevirtNode node);
+
+    /**
+     * Processes the given node for incomplete state.
+     *
+     * @param node kubevirt node
+     */
+    void processIncompleteState(KubevirtNode node);
+
+    /**
+     * Processes the given node for on boarded state.
+     *
+     * @param node kubevirt node
+     */
+    void processOnBoardedState(KubevirtNode node);
 }
diff --git a/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/KubevirtNodeService.java b/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/KubevirtNodeService.java
index e032ba3..480969d 100644
--- a/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/KubevirtNodeService.java
+++ b/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/KubevirtNodeService.java
@@ -82,4 +82,13 @@
      * @return kubevirt node
      */
     KubevirtNode node(IpAddress mgmtIp);
+
+    /**
+     * Returns the node with the specified tunnel device ID.
+     * The device ID tunnel bridge.
+     *
+     * @param deviceId device id
+     * @return kubevirt node
+     */
+    KubevirtNode nodeByTunBridge(DeviceId deviceId);
 }
diff --git a/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/KubevirtNodeState.java b/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/KubevirtNodeState.java
index 87d921e..5baf3f9 100644
--- a/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/KubevirtNodeState.java
+++ b/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/KubevirtNodeState.java
@@ -26,12 +26,11 @@
     PRE_ON_BOARD {
         @Override
         public void process(KubevirtNodeHandler handler, KubevirtNode node) {
-
         }
 
         @Override
-        public KubevirtNodeState nodeState() {
-            return null;
+        public KubevirtNodeState nextState() {
+            return ON_BOARDED;
         }
     },
     /**
@@ -40,12 +39,12 @@
     ON_BOARDED {
         @Override
         public void process(KubevirtNodeHandler handler, KubevirtNode node) {
-
+            handler.processOnBoardedState(node);
         }
 
         @Override
-        public KubevirtNodeState nodeState() {
-            return null;
+        public KubevirtNodeState nextState() {
+            return ON_BOARDED;
         }
     },
     /**
@@ -54,12 +53,12 @@
     INIT {
         @Override
         public void process(KubevirtNodeHandler handler, KubevirtNode node) {
-
+            handler.processInitState(node);
         }
 
         @Override
-        public KubevirtNodeState nodeState() {
-            return null;
+        public KubevirtNodeState nextState() {
+            return DEVICE_CREATED;
         }
     },
     /**
@@ -68,12 +67,12 @@
     DEVICE_CREATED {
         @Override
         public void process(KubevirtNodeHandler handler, KubevirtNode node) {
-
+            handler.processDeviceCreatedState(node);
         }
 
         @Override
-        public KubevirtNodeState nodeState() {
-            return null;
+        public KubevirtNodeState nextState() {
+            return COMPLETE;
         }
     },
     /**
@@ -82,12 +81,12 @@
     COMPLETE {
         @Override
         public void process(KubevirtNodeHandler handler, KubevirtNode node) {
-
+            handler.processCompleteState(node);
         }
 
         @Override
-        public KubevirtNodeState nodeState() {
-            return null;
+        public KubevirtNodeState nextState() {
+            return COMPLETE;
         }
     },
     /**
@@ -96,12 +95,12 @@
     INCOMPLETE {
         @Override
         public void process(KubevirtNodeHandler handler, KubevirtNode node) {
-
+            handler.processIncompleteState(node);
         }
 
         @Override
-        public KubevirtNodeState nodeState() {
-            return null;
+        public KubevirtNodeState nextState() {
+            return INIT;
         }
     };
 
@@ -118,5 +117,5 @@
      *
      * @return the next kubevirt node state
      */
-    public abstract KubevirtNodeState nodeState();
+    public abstract KubevirtNodeState nextState();
 }
diff --git a/apps/kubevirt-node/api/src/test/java/org/onosproject/kubevirtnode/api/DefaultKubevirtNodeTest.java b/apps/kubevirt-node/api/src/test/java/org/onosproject/kubevirtnode/api/DefaultKubevirtNodeTest.java
index 2fa6441..b2537fd 100644
--- a/apps/kubevirt-node/api/src/test/java/org/onosproject/kubevirtnode/api/DefaultKubevirtNodeTest.java
+++ b/apps/kubevirt-node/api/src/test/java/org/onosproject/kubevirtnode/api/DefaultKubevirtNodeTest.java
@@ -81,6 +81,7 @@
                 .managementIp(MANAGEMENT_IP)
                 .dataIp(DATA_IP)
                 .intgBridge(DEVICE_1.id())
+                .tunBridge(DEVICE_1.id())
                 .state(KubevirtNodeState.COMPLETE)
                 .phyIntfs(PHY_INTFS)
                 .build();
@@ -135,6 +136,7 @@
         DefaultKubevirtNode.builder()
                 .type(KubevirtNode.Type.WORKER)
                 .intgBridge(DEVICE_1.id())
+                .tunBridge(DEVICE_1.id())
                 .managementIp(TEST_IP)
                 .dataIp(TEST_IP)
                 .state(KubevirtNodeState.INIT)
@@ -149,6 +151,7 @@
         DefaultKubevirtNode.builder()
                 .hostname(HOSTNAME_1)
                 .intgBridge(DEVICE_1.id())
+                .tunBridge(DEVICE_1.id())
                 .managementIp(TEST_IP)
                 .dataIp(TEST_IP)
                 .state(KubevirtNodeState.INIT)
@@ -165,6 +168,7 @@
                 .hostname(HOSTNAME_1)
                 .type(KubevirtNode.Type.WORKER)
                 .intgBridge(DEVICE_1.id())
+                .tunBridge(DEVICE_1.id())
                 .dataIp(TEST_IP)
                 .state(KubevirtNodeState.INIT)
                 .build();
diff --git a/apps/kubevirt-node/api/src/test/java/org/onosproject/kubevirtnode/api/KubevirtNodeTest.java b/apps/kubevirt-node/api/src/test/java/org/onosproject/kubevirtnode/api/KubevirtNodeTest.java
index abb1643..478bafd 100644
--- a/apps/kubevirt-node/api/src/test/java/org/onosproject/kubevirtnode/api/KubevirtNodeTest.java
+++ b/apps/kubevirt-node/api/src/test/java/org/onosproject/kubevirtnode/api/KubevirtNodeTest.java
@@ -47,6 +47,7 @@
                 .hostname(hostname)
                 .type(type)
                 .intgBridge(intgBridge.id())
+                .tunBridge(intgBridge.id())
                 .managementIp(ipAddr)
                 .dataIp(ipAddr)
                 .state(state)
