diff --git a/protocols/p4runtime/model/src/main/java/org/onosproject/p4runtime/model/P4ControlMetadataModel.java b/protocols/p4runtime/model/src/main/java/org/onosproject/p4runtime/model/P4ControlMetadataModel.java
index 45e7edc..a6e2a43 100644
--- a/protocols/p4runtime/model/src/main/java/org/onosproject/p4runtime/model/P4ControlMetadataModel.java
+++ b/protocols/p4runtime/model/src/main/java/org/onosproject/p4runtime/model/P4ControlMetadataModel.java
@@ -16,26 +16,26 @@
 
 package org.onosproject.p4runtime.model;
 
-import org.onosproject.net.pi.model.PiControlMetadataId;
-import org.onosproject.net.pi.model.PiControlMetadataModel;
+import org.onosproject.net.pi.model.PiPacketMetadataId;
+import org.onosproject.net.pi.model.PiPacketMetadataModel;
 
 import java.util.Objects;
 
 /**
- * Implementation of PiControlMetadataModel for P4Runtime.
+ * Implementation of PiPacketMetadataModel for P4Runtime.
  */
-final class P4ControlMetadataModel implements PiControlMetadataModel {
+final class P4PacketMetadataModel implements PiPacketMetadataModel {
 
-    private final PiControlMetadataId id;
+    private final PiPacketMetadataId id;
     private final int bitWidth;
 
-    P4ControlMetadataModel(PiControlMetadataId id, int bitWidth) {
+    P4PacketMetadataModel(PiPacketMetadataId id, int bitWidth) {
         this.id = id;
         this.bitWidth = bitWidth;
     }
 
     @Override
-    public PiControlMetadataId id() {
+    public PiPacketMetadataId id() {
         return id;
     }
 
@@ -57,7 +57,7 @@
         if (obj == null || getClass() != obj.getClass()) {
             return false;
         }
-        final P4ControlMetadataModel other = (P4ControlMetadataModel) obj;
+        final P4PacketMetadataModel other = (P4PacketMetadataModel) obj;
         return Objects.equals(this.id, other.id)
                 && Objects.equals(this.bitWidth, other.bitWidth);
     }
diff --git a/protocols/p4runtime/model/src/main/java/org/onosproject/p4runtime/model/P4InfoParser.java b/protocols/p4runtime/model/src/main/java/org/onosproject/p4runtime/model/P4InfoParser.java
index c69cd0b..6160881 100644
--- a/protocols/p4runtime/model/src/main/java/org/onosproject/p4runtime/model/P4InfoParser.java
+++ b/protocols/p4runtime/model/src/main/java/org/onosproject/p4runtime/model/P4InfoParser.java
@@ -28,8 +28,8 @@
 import org.onosproject.net.pi.model.PiActionParamModel;
 import org.onosproject.net.pi.model.PiActionProfileId;
 import org.onosproject.net.pi.model.PiActionProfileModel;
-import org.onosproject.net.pi.model.PiControlMetadataId;
-import org.onosproject.net.pi.model.PiControlMetadataModel;
+import org.onosproject.net.pi.model.PiPacketMetadataId;
+import org.onosproject.net.pi.model.PiPacketMetadataModel;
 import org.onosproject.net.pi.model.PiCounterId;
 import org.onosproject.net.pi.model.PiCounterModel;
 import org.onosproject.net.pi.model.PiCounterType;
@@ -362,10 +362,10 @@
             throws P4InfoParserException {
         final Map<PiPacketOperationType, PiPacketOperationModel> packetOpMap = Maps.newHashMap();
         for (ControllerPacketMetadata ctrlPktMetaMsg : p4info.getControllerPacketMetadataList()) {
-            final ImmutableList.Builder<PiControlMetadataModel> metadataListBuilder =
+            final ImmutableList.Builder<PiPacketMetadataModel> metadataListBuilder =
                     ImmutableList.builder();
             ctrlPktMetaMsg.getMetadataList().forEach(metadataMsg -> metadataListBuilder.add(
-                    new P4ControlMetadataModel(PiControlMetadataId.of(metadataMsg.getName()),
+                    new P4PacketMetadataModel(PiPacketMetadataId.of(metadataMsg.getName()),
                                                metadataMsg.getBitwidth())));
             packetOpMap.put(
                     mapPacketOpType(ctrlPktMetaMsg.getPreamble().getName()),
diff --git a/protocols/p4runtime/model/src/main/java/org/onosproject/p4runtime/model/P4PacketOperationModel.java b/protocols/p4runtime/model/src/main/java/org/onosproject/p4runtime/model/P4PacketOperationModel.java
index 84e2fe4..e29553f 100644
--- a/protocols/p4runtime/model/src/main/java/org/onosproject/p4runtime/model/P4PacketOperationModel.java
+++ b/protocols/p4runtime/model/src/main/java/org/onosproject/p4runtime/model/P4PacketOperationModel.java
@@ -17,7 +17,7 @@
 package org.onosproject.p4runtime.model;
 
 import com.google.common.collect.ImmutableList;
-import org.onosproject.net.pi.model.PiControlMetadataModel;
+import org.onosproject.net.pi.model.PiPacketMetadataModel;
 import org.onosproject.net.pi.model.PiPacketOperationModel;
 import org.onosproject.net.pi.model.PiPacketOperationType;
 
@@ -30,10 +30,10 @@
 final class P4PacketOperationModel implements PiPacketOperationModel {
 
     private final PiPacketOperationType type;
-    private final ImmutableList<PiControlMetadataModel> metadatas;
+    private final ImmutableList<PiPacketMetadataModel> metadatas;
 
     P4PacketOperationModel(PiPacketOperationType type,
-                                  ImmutableList<PiControlMetadataModel> metadatas) {
+                                  ImmutableList<PiPacketMetadataModel> metadatas) {
         this.type = type;
         this.metadatas = metadatas;
     }
@@ -44,7 +44,7 @@
     }
 
     @Override
-    public List<PiControlMetadataModel> metadatas() {
+    public List<PiPacketMetadataModel> metadatas() {
         return metadatas;
     }
 
diff --git a/protocols/p4runtime/model/src/test/java/org/onosproject/p4runtime/model/P4ControlMetadataModelTest.java b/protocols/p4runtime/model/src/test/java/org/onosproject/p4runtime/model/P4PacketMetadataModelTest.java
similarity index 61%
rename from protocols/p4runtime/model/src/test/java/org/onosproject/p4runtime/model/P4ControlMetadataModelTest.java
rename to protocols/p4runtime/model/src/test/java/org/onosproject/p4runtime/model/P4PacketMetadataModelTest.java
index 998875a..ca5f131 100644
--- a/protocols/p4runtime/model/src/test/java/org/onosproject/p4runtime/model/P4ControlMetadataModelTest.java
+++ b/protocols/p4runtime/model/src/test/java/org/onosproject/p4runtime/model/P4PacketMetadataModelTest.java
@@ -17,32 +17,31 @@
 
 import com.google.common.testing.EqualsTester;
 import org.junit.Test;
-import org.onosproject.net.pi.model.PiControlMetadataId;
+import org.onosproject.net.pi.model.PiPacketMetadataId;
 
-import static org.junit.Assert.*;
 import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
 
 /**
- * Test for P4ControlMetadataModel class.
+ * Test for P4PacketMetadataModel class.
  */
-public class P4ControlMetadataModelTest {
+public class P4PacketMetadataModelTest {
 
-    private final PiControlMetadataId piControlMetadataId = PiControlMetadataId.of("EGRESS_PORT");
-    private final PiControlMetadataId sameAsPiControlMetadataId = PiControlMetadataId.of("EGRESS_PORT");
-    private final PiControlMetadataId piControlMetadataId2 = PiControlMetadataId.of("INGRESS_PORT");
+    private final PiPacketMetadataId piPacketMetadataId = PiPacketMetadataId.of("EGRESS_PORT");
+    private final PiPacketMetadataId sameAsPiPacketMetadataId = PiPacketMetadataId.of("EGRESS_PORT");
+    private final PiPacketMetadataId piPacketMetadataId2 = PiPacketMetadataId.of("INGRESS_PORT");
 
     private static final int BIT_WIDTH_32 = 32;
     private static final int BIT_WIDTH_64 = 64;
 
-    private final P4ControlMetadataModel metadataModel = new P4ControlMetadataModel(piControlMetadataId, BIT_WIDTH_32);
+    private final P4PacketMetadataModel metadataModel = new P4PacketMetadataModel(piPacketMetadataId, BIT_WIDTH_32);
 
-    private final P4ControlMetadataModel sameAsMetadataModel = new P4ControlMetadataModel(sameAsPiControlMetadataId,
+    private final P4PacketMetadataModel sameAsMetadataModel = new P4PacketMetadataModel(sameAsPiPacketMetadataId,
                                                                                           BIT_WIDTH_32);
 
-    private final P4ControlMetadataModel metadataModel2 = new P4ControlMetadataModel(piControlMetadataId2,
+    private final P4PacketMetadataModel metadataModel2 = new P4PacketMetadataModel(piPacketMetadataId2,
                                                                                      BIT_WIDTH_32);
 
-    private final P4ControlMetadataModel metadataModel3 = new P4ControlMetadataModel(piControlMetadataId, BIT_WIDTH_64);
+    private final P4PacketMetadataModel metadataModel3 = new P4PacketMetadataModel(piPacketMetadataId, BIT_WIDTH_64);
 
 
 
@@ -51,7 +50,7 @@
      */
     @Test
     public void testImmutability() {
-        assertThatClassIsImmutable(P4ControlMetadataModel.class);
+        assertThatClassIsImmutable(P4PacketMetadataModel.class);
     }
 
     /**
@@ -65,4 +64,4 @@
                 .addEqualityGroup(metadataModel3)
                 .testEquals();
     }
-}
\ No newline at end of file
+}
diff --git a/protocols/p4runtime/model/src/test/java/org/onosproject/p4runtime/model/P4PacketOperationModelTest.java b/protocols/p4runtime/model/src/test/java/org/onosproject/p4runtime/model/P4PacketOperationModelTest.java
index 486a625..5d760e8 100644
--- a/protocols/p4runtime/model/src/test/java/org/onosproject/p4runtime/model/P4PacketOperationModelTest.java
+++ b/protocols/p4runtime/model/src/test/java/org/onosproject/p4runtime/model/P4PacketOperationModelTest.java
@@ -19,8 +19,8 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.testing.EqualsTester;
 import org.junit.Test;
-import org.onosproject.net.pi.model.PiControlMetadataId;
-import org.onosproject.net.pi.model.PiControlMetadataModel;
+import org.onosproject.net.pi.model.PiPacketMetadataId;
+import org.onosproject.net.pi.model.PiPacketMetadataModel;
 import org.onosproject.net.pi.model.PiPacketOperationType;
 import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
 
@@ -32,29 +32,29 @@
     private static final PiPacketOperationType PI_PACKET_OPERATION_TYPE_1 = PiPacketOperationType.PACKET_IN;
     private static final PiPacketOperationType PI_PACKET_OPERATION_TYPE_2 = PiPacketOperationType.PACKET_OUT;
 
-    private static final PiControlMetadataId PI_CONTROL_METADATA_ID_1 = PiControlMetadataId.of("Metadata1");
-    private static final PiControlMetadataId PI_CONTROL_METADATA_ID_2 = PiControlMetadataId.of("Metadata2");
+    private static final PiPacketMetadataId PI_CONTROL_METADATA_ID_1 = PiPacketMetadataId.of("Metadata1");
+    private static final PiPacketMetadataId PI_CONTROL_METADATA_ID_2 = PiPacketMetadataId.of("Metadata2");
 
     private static final int BIT_WIDTH_1 = 8;
     private static final int BIT_WIDTH_2 = 9;
 
-    private static final PiControlMetadataModel PI_CONTROL_METADATA_MODEL_1 =
-        new P4ControlMetadataModel(PI_CONTROL_METADATA_ID_1, BIT_WIDTH_1);
-    private static final PiControlMetadataModel PI_CONTROL_METADATA_MODEL_2 =
-        new P4ControlMetadataModel(PI_CONTROL_METADATA_ID_2, BIT_WIDTH_2);
+    private static final PiPacketMetadataModel PI_CONTROL_METADATA_MODEL_1 =
+        new P4PacketMetadataModel(PI_CONTROL_METADATA_ID_1, BIT_WIDTH_1);
+    private static final PiPacketMetadataModel PI_CONTROL_METADATA_MODEL_2 =
+        new P4PacketMetadataModel(PI_CONTROL_METADATA_ID_2, BIT_WIDTH_2);
 
-    private static final ImmutableList<PiControlMetadataModel> METADATAS_1 =
-        new ImmutableList.Builder<PiControlMetadataModel>()
+    private static final ImmutableList<PiPacketMetadataModel> METADATAS_1 =
+        new ImmutableList.Builder<PiPacketMetadataModel>()
             .add(PI_CONTROL_METADATA_MODEL_1)
             .build();
 
-    private static final ImmutableList<PiControlMetadataModel> METADATAS_2 =
-        new ImmutableList.Builder<PiControlMetadataModel>()
+    private static final ImmutableList<PiPacketMetadataModel> METADATAS_2 =
+        new ImmutableList.Builder<PiPacketMetadataModel>()
             .add(PI_CONTROL_METADATA_MODEL_2)
             .build();
 
-    private static final ImmutableList<PiControlMetadataModel> METADATAS_3 =
-        new ImmutableList.Builder<PiControlMetadataModel>()
+    private static final ImmutableList<PiPacketMetadataModel> METADATAS_3 =
+        new ImmutableList.Builder<PiPacketMetadataModel>()
             .add(PI_CONTROL_METADATA_MODEL_1)
             .add(PI_CONTROL_METADATA_MODEL_2)
             .build();
@@ -87,4 +87,4 @@
             .addEqualityGroup(P4_PACKET_OPERATION_MODEL_3)
             .testEquals();
     }
-}
\ No newline at end of file
+}
diff --git a/protocols/p4runtime/model/src/test/java/org/onosproject/p4runtime/model/P4PipelineModelTest.java b/protocols/p4runtime/model/src/test/java/org/onosproject/p4runtime/model/P4PipelineModelTest.java
index 4723ea5..e8b1c70 100644
--- a/protocols/p4runtime/model/src/test/java/org/onosproject/p4runtime/model/P4PipelineModelTest.java
+++ b/protocols/p4runtime/model/src/test/java/org/onosproject/p4runtime/model/P4PipelineModelTest.java
@@ -27,8 +27,8 @@
 import org.onosproject.net.pi.model.PiActionParamModel;
 import org.onosproject.net.pi.model.PiActionProfileId;
 import org.onosproject.net.pi.model.PiActionProfileModel;
-import org.onosproject.net.pi.model.PiControlMetadataId;
-import org.onosproject.net.pi.model.PiControlMetadataModel;
+import org.onosproject.net.pi.model.PiPacketMetadataId;
+import org.onosproject.net.pi.model.PiPacketMetadataModel;
 import org.onosproject.net.pi.model.PiCounterId;
 import org.onosproject.net.pi.model.PiCounterModel;
 import org.onosproject.net.pi.model.PiCounterType;
@@ -287,16 +287,16 @@
     private static final PiPacketOperationType PI_PACKET_OPERATION_TYPE_1 = PiPacketOperationType.PACKET_IN;
     private static final PiPacketOperationType PI_PACKET_OPERATION_TYPE_2 = PiPacketOperationType.PACKET_OUT;
 
-    private static final PiControlMetadataId PI_CONTROL_METADATA_ID_1 = PiControlMetadataId.of("INGRESS PORT");
-    private static final PiControlMetadataId PI_CONTROL_METADATA_ID_2 = PiControlMetadataId.of("EGRESS PORT");
+    private static final PiPacketMetadataId PI_CONTROL_METADATA_ID_1 = PiPacketMetadataId.of("INGRESS PORT");
+    private static final PiPacketMetadataId PI_CONTROL_METADATA_ID_2 = PiPacketMetadataId.of("EGRESS PORT");
 
     private static final int META_BIT_WIDTH_1 = 32;
     private static final int META_BIT_WIDTH_2 = 64;
 
-    private static final PiControlMetadataModel P4_CONTROL_METADATA_MODEL_1 =
-            new P4ControlMetadataModel(PI_CONTROL_METADATA_ID_1, META_BIT_WIDTH_1);
-    private static final PiControlMetadataModel P4_CONTROL_METADATA_MODEL_2 =
-            new P4ControlMetadataModel(PI_CONTROL_METADATA_ID_2, META_BIT_WIDTH_2);
+    private static final PiPacketMetadataModel P4_CONTROL_METADATA_MODEL_1 =
+            new P4PacketMetadataModel(PI_CONTROL_METADATA_ID_1, META_BIT_WIDTH_1);
+    private static final PiPacketMetadataModel P4_CONTROL_METADATA_MODEL_2 =
+            new P4PacketMetadataModel(PI_CONTROL_METADATA_ID_2, META_BIT_WIDTH_2);
 
     /* Pipeline Models */
     private static final ImmutableMap<PiTableId, PiTableModel> TABLES_1 =
@@ -317,12 +317,12 @@
                     .put(PI_ACTION_PROFILE_ID_2, P4_ACTION_PROFILE_MODEL_2)
                     .build();
 
-    private static final ImmutableList<PiControlMetadataModel> METADATAS_1 =
-            new ImmutableList.Builder<PiControlMetadataModel>()
+    private static final ImmutableList<PiPacketMetadataModel> METADATAS_1 =
+            new ImmutableList.Builder<PiPacketMetadataModel>()
                     .add(P4_CONTROL_METADATA_MODEL_1)
                     .build();
-    private static final ImmutableList<PiControlMetadataModel> METADATAS_2 =
-            new ImmutableList.Builder<PiControlMetadataModel>()
+    private static final ImmutableList<PiPacketMetadataModel> METADATAS_2 =
+            new ImmutableList.Builder<PiPacketMetadataModel>()
                     .add(P4_CONTROL_METADATA_MODEL_2)
                     .build();
 
