diff --git a/core/api/src/main/java/org/onlab/onos/net/packet/DefaultInboundPacket.java b/core/api/src/main/java/org/onlab/onos/net/packet/DefaultInboundPacket.java
index ddead1d..68e08ad 100644
--- a/core/api/src/main/java/org/onlab/onos/net/packet/DefaultInboundPacket.java
+++ b/core/api/src/main/java/org/onlab/onos/net/packet/DefaultInboundPacket.java
@@ -26,7 +26,7 @@
 /**
  * Default implementation of an immutable inbound packet.
  */
-public class DefaultInboundPacket implements InboundPacket {
+public final class DefaultInboundPacket implements InboundPacket {
 
     private final ConnectPoint receivedFrom;
     private final Ethernet parsed;
diff --git a/core/api/src/main/java/org/onlab/onos/net/packet/DefaultOutboundPacket.java b/core/api/src/main/java/org/onlab/onos/net/packet/DefaultOutboundPacket.java
index 01ecf96..624f0d8 100644
--- a/core/api/src/main/java/org/onlab/onos/net/packet/DefaultOutboundPacket.java
+++ b/core/api/src/main/java/org/onlab/onos/net/packet/DefaultOutboundPacket.java
@@ -16,6 +16,7 @@
 package org.onlab.onos.net.packet;
 
 import java.nio.ByteBuffer;
+import java.util.Objects;
 
 import org.onlab.onos.net.DeviceId;
 import org.onlab.onos.net.flow.TrafficTreatment;
@@ -25,7 +26,7 @@
 /**
  * Default implementation of an immutable outbound packet.
  */
-public class DefaultOutboundPacket implements OutboundPacket {
+public final class DefaultOutboundPacket implements OutboundPacket {
     private final DeviceId sendThrough;
     private final TrafficTreatment treatment;
     private final ByteBuffer data;
@@ -61,6 +62,24 @@
     }
 
     @Override
+    public int hashCode() {
+        return Objects.hash(sendThrough, treatment, data);
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj instanceof OutboundPacket) {
+            final DefaultOutboundPacket other = (DefaultOutboundPacket) obj;
+            return Objects.equals(this.sendThrough, other.sendThrough) &&
+                    Objects.equals(this.treatment, other.treatment) &&
+                    Objects.equals(this.data, other.data);
+        }
+        return false;
+    }
+    @Override
     public String toString() {
         return MoreObjects.toStringHelper(this)
                 .add("sendThrough", sendThrough)
