diff --git a/apps/fwd/src/main/java/org/onosproject/fwd/ReactiveForwarding.java b/apps/fwd/src/main/java/org/onosproject/fwd/ReactiveForwarding.java
index 7abf134..dcb28f9 100644
--- a/apps/fwd/src/main/java/org/onosproject/fwd/ReactiveForwarding.java
+++ b/apps/fwd/src/main/java/org/onosproject/fwd/ReactiveForwarding.java
@@ -505,10 +505,9 @@
                         .matchIPProtocol(ipv4Protocol);
 
                 if (matchIpv4Dscp) {
-                    int dscp = ipv4Packet.getDiffServ() >>> 2;
-                    int ecn = ipv4Packet.getDiffServ() % 4;
-                    builder.matchIPDscp((byte) (dscp))
-                            .matchIPEcn((byte) (ecn));
+                    byte dscp = ipv4Packet.getDscp();
+                    byte ecn = ipv4Packet.getEcn();
+                    builder.matchIPDscp(dscp).matchIPEcn(ecn);
                 }
 
                 if (matchTcpUdpPorts && ipv4Protocol == IPv4.PROTOCOL_TCP) {
diff --git a/utils/misc/src/main/java/org/onlab/packet/IPv4.java b/utils/misc/src/main/java/org/onlab/packet/IPv4.java
index 574fd1a..1e00ca5 100644
--- a/utils/misc/src/main/java/org/onlab/packet/IPv4.java
+++ b/utils/misc/src/main/java/org/onlab/packet/IPv4.java
@@ -41,6 +41,10 @@
         IPv4.PROTOCOL_CLASS_MAP.put(IPv4.PROTOCOL_UDP, UDP.class);
     }
 
+    private static final byte DSCP_MASK = 0x3f;
+    private static final byte DSCP_OFFSET = 2;
+    private static final byte ECN_MASK = 0x3;
+
     protected byte version;
     protected byte headerLength;
     protected byte diffServ;
@@ -91,15 +95,61 @@
     }
 
     /**
-     * @return the diffServ
+     * Gets the DSCP value (6 bits).
+     *
+     * @return the DSCP value (6 bits)
+     */
+    public byte getDscp() {
+        return (byte) ((this.diffServ >>> DSCP_OFFSET) & DSCP_MASK);
+    }
+
+    /**
+     * Sets the DSCP value (6 bits).
+     *
+     * @param dscp the DSCP value (6 bits)
+     * @return this
+     */
+    public IPv4 setDscp(byte dscp) {
+        this.diffServ &= ~(DSCP_MASK << DSCP_OFFSET);
+        this.diffServ |= (dscp & DSCP_MASK) << DSCP_OFFSET;
+        return this;
+    }
+
+    /**
+     * Gets the ECN value (2 bits).
+     *
+     * @return the ECN value (2 bits)
+     */
+    public byte getEcn() {
+        return (byte) (this.diffServ & ECN_MASK);
+    }
+
+    /**
+     * Sets the ECN value (2 bits).
+     *
+     * @param ecn the ECN value (2 bits)
+     * @return this
+     */
+    public IPv4 setEcn(byte ecn) {
+        this.diffServ &= ~ECN_MASK;
+        this.diffServ |= (ecn & ECN_MASK);
+        return this;
+    }
+
+    /**
+     * Gets the DiffServ octet (including the DSCP and ECN bits).
+     *
+     * @return the diffServ octet (including the DSCP and ECN bits)
      */
     public byte getDiffServ() {
         return this.diffServ;
     }
 
     /**
-     * @param diffServ
-     *            the diffServ to set
+     * Sets the DiffServ octet (including the DSCP and ECN bits).
+     *
+     * @param diffServ the diffServ octet to set (including the DSCP and ECN
+     * bits)
      * @return this
      */
     public IPv4 setDiffServ(final byte diffServ) {
