diff --git a/core/common/src/main/java/org/onosproject/codec/impl/DecodeInstructionCodecHelper.java b/core/common/src/main/java/org/onosproject/codec/impl/DecodeInstructionCodecHelper.java
index 57e73ed..20d6fac 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/DecodeInstructionCodecHelper.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/DecodeInstructionCodecHelper.java
@@ -37,6 +37,7 @@
 import org.onosproject.net.flow.instructions.L2ModificationInstruction;
 import org.onosproject.net.flow.instructions.L3ModificationInstruction;
 import org.onosproject.net.flow.instructions.L4ModificationInstruction;
+import org.onosproject.net.meter.MeterId;
 
 import static org.onlab.util.Tools.nullIsIllegal;
 
@@ -267,6 +268,10 @@
             GroupId groupId = new DefaultGroupId(nullIsIllegal(json.get(InstructionCodec.GROUP_ID)
                     .asInt(), InstructionCodec.GROUP_ID + InstructionCodec.MISSING_MEMBER_MESSAGE));
             return Instructions.createGroup(groupId);
+        } else if (type.equals(Instruction.Type.METER.name())) {
+            MeterId meterId = MeterId.meterId(nullIsIllegal(json.get(InstructionCodec.METER_ID)
+                    .asLong(), InstructionCodec.METER_ID + InstructionCodec.MISSING_MEMBER_MESSAGE));
+            return Instructions.meterTraffic(meterId);
         } else if (type.equals(Instruction.Type.L0MODIFICATION.name())) {
             return decodeL0();
         } else if (type.equals(Instruction.Type.L1MODIFICATION.name())) {
diff --git a/core/common/src/main/java/org/onosproject/codec/impl/EncodeInstructionCodecHelper.java b/core/common/src/main/java/org/onosproject/codec/impl/EncodeInstructionCodecHelper.java
index eccbddb..409a2f6 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/EncodeInstructionCodecHelper.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/EncodeInstructionCodecHelper.java
@@ -42,7 +42,7 @@
      * Creates an instruction object encoder.
      *
      * @param instruction instruction to encode
-     * @param context codec context for the encoding
+     * @param context     codec context for the encoding
      */
     public EncodeInstructionCodecHelper(Instruction instruction, CodecContext context) {
         this.instruction = instruction;
@@ -93,20 +93,21 @@
         result.put(InstructionCodec.SUBTYPE, instruction.subtype().name());
 
         switch (instruction.subtype()) {
-        case ODU_SIGID:
-            final L1ModificationInstruction.ModOduSignalIdInstruction oduSignalIdInstruction =
-                    (L1ModificationInstruction.ModOduSignalIdInstruction) instruction;
-            OduSignalId oduSignalId = oduSignalIdInstruction.oduSignalId();
+            case ODU_SIGID:
+                final L1ModificationInstruction.ModOduSignalIdInstruction oduSignalIdInstruction =
+                        (L1ModificationInstruction.ModOduSignalIdInstruction) instruction;
+                OduSignalId oduSignalId = oduSignalIdInstruction.oduSignalId();
 
-            ObjectNode child = result.putObject("oduSignalId");
+                ObjectNode child = result.putObject("oduSignalId");
 
-            child.put(InstructionCodec.TRIBUTARY_PORT_NUMBER, oduSignalId.tributaryPortNumber());
-            child.put(InstructionCodec.TRIBUTARY_SLOT_LEN, oduSignalId.tributarySlotLength());
-            child.put(InstructionCodec.TRIBUTARY_SLOT_BITMAP, HexString.toHexString(oduSignalId.tributarySlotBitmap()));
-            break;
-        default:
-            log.info("Cannot convert L1 subtype of {}", instruction.subtype());
-            break;
+                child.put(InstructionCodec.TRIBUTARY_PORT_NUMBER, oduSignalId.tributaryPortNumber());
+                child.put(InstructionCodec.TRIBUTARY_SLOT_LEN, oduSignalId.tributarySlotLength());
+                child.put(InstructionCodec.TRIBUTARY_SLOT_BITMAP,
+                        HexString.toHexString(oduSignalId.tributarySlotBitmap()));
+                break;
+            default:
+                log.info("Cannot convert L1 subtype of {}", instruction.subtype());
+                break;
         }
     }
 
@@ -151,7 +152,7 @@
                         (L2ModificationInstruction.PushHeaderInstructions) instruction;
 
                 result.put(InstructionCodec.ETHERNET_TYPE,
-                           pushHeaderInstructions.ethernetType().toShort());
+                        pushHeaderInstructions.ethernetType().toShort());
                 break;
 
             case TUNNEL_ID:
@@ -254,6 +255,12 @@
                 result.put(InstructionCodec.GROUP_ID, groupInstruction.groupId().toString());
                 break;
 
+            case METER:
+                final Instructions.MeterInstruction meterInstruction =
+                        (Instructions.MeterInstruction) instruction;
+                result.put(InstructionCodec.METER_ID, meterInstruction.meterId().toString());
+                break;
+
             case L0MODIFICATION:
                 encodeL0(result);
                 break;
diff --git a/core/common/src/main/java/org/onosproject/codec/impl/InstructionCodec.java b/core/common/src/main/java/org/onosproject/codec/impl/InstructionCodec.java
index ab60909..2d646b0 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/InstructionCodec.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/InstructionCodec.java
@@ -51,6 +51,7 @@
     protected static final String UDP_PORT = "udpPort";
     protected static final String TABLE_ID = "tableId";
     protected static final String GROUP_ID = "groupId";
+    protected static final String METER_ID = "meterId";
     protected static final String TRIBUTARY_PORT_NUMBER = "tributaryPortNumber";
     protected static final String TRIBUTARY_SLOT_LEN = "tributarySlotLength";
     protected static final String TRIBUTARY_SLOT_BITMAP = "tributarySlotBitmap";
