diff --git a/core/api/src/main/java/org/onosproject/net/flow/instructions/L2ModificationInstruction.java b/core/api/src/main/java/org/onosproject/net/flow/instructions/L2ModificationInstruction.java
index 2fd809f..bfb6300 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/instructions/L2ModificationInstruction.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/instructions/L2ModificationInstruction.java
@@ -81,7 +81,12 @@
         /**
          * VLAN Push modification.
          */
-        VLAN_PUSH
+        VLAN_PUSH,
+
+        /**
+         * Tunnle id modification.
+         */
+        TUNNEL_ID
     }
 
     // TODO: Create factory class 'Instructions' that will have various factory
@@ -401,4 +406,50 @@
             return false;
         }
     }
+
+    /**
+     * Represents a Tunnel id modification.
+     */
+    public static final class ModTunnelIdInstruction
+            extends L2ModificationInstruction {
+
+        private final long tunnelId;
+
+        ModTunnelIdInstruction(long tunnelId) {
+            this.tunnelId = tunnelId;
+        }
+
+        public long tunnelId() {
+            return this.tunnelId;
+        }
+
+        @Override
+        public L2SubType subtype() {
+            return L2SubType.TUNNEL_ID;
+        }
+
+        @Override
+        public String toString() {
+            return toStringHelper(subtype().toString())
+                    .add("id", Long.toHexString(tunnelId))
+                    .toString();
+        }
+
+        @Override
+        public int hashCode() {
+            return Objects.hash(type(), subtype(), tunnelId);
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            if (this == obj) {
+                return true;
+            }
+            if (obj instanceof ModTunnelIdInstruction) {
+                ModTunnelIdInstruction that = (ModTunnelIdInstruction) obj;
+                return  Objects.equals(tunnelId, that.tunnelId);
+            }
+            return false;
+        }
+    }
 }
