diff --git a/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficTreatment.java b/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficTreatment.java
index c6a1c16..72cfd3f 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficTreatment.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficTreatment.java
@@ -515,6 +515,11 @@
         }
 
         @Override
+        public TrafficTreatment.Builder setIpDscp(byte dscpValue) {
+            return add(Instructions.modIpDscp(dscpValue));
+        }
+
+        @Override
         public TrafficTreatment.Builder extension(ExtensionTreatment extension,
                                                   DeviceId deviceId) {
             return add(Instructions.extension(extension, deviceId));
diff --git a/core/api/src/main/java/org/onosproject/net/flow/TrafficTreatment.java b/core/api/src/main/java/org/onosproject/net/flow/TrafficTreatment.java
index f61b017..154f8c6 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/TrafficTreatment.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/TrafficTreatment.java
@@ -428,6 +428,14 @@
         Builder piTableAction(PiTableAction piTableAction);
 
         /**
+         * Sets the IP DSCP field.
+         *
+         * @param dscpValue the DSCP value
+         * @return a treatment builder.
+         */
+        Builder setIpDscp(byte dscpValue);
+
+        /**
          * Uses an extension treatment.
          *
          * @param extension extension treatment
diff --git a/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java b/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java
index 33b7482..e0c58d3 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java
@@ -485,6 +485,16 @@
     }
 
     /**
+     * Creates an IP DSCP modification.
+     *
+     * @param dscpValue the DSCP value to modify to
+     * @return a L3 modification
+     */
+    public static Instruction modIpDscp(byte dscpValue) {
+        return new L3ModificationInstruction.ModDscpInstruction(L3SubType.IP_DSCP, dscpValue);
+    }
+
+    /**
      * Creates an extension instruction.
      *
      * @param extension extension instruction
diff --git a/core/api/src/main/java/org/onosproject/net/flow/instructions/L3ModificationInstruction.java b/core/api/src/main/java/org/onosproject/net/flow/instructions/L3ModificationInstruction.java
index 9fddf89..cc15360 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/instructions/L3ModificationInstruction.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/instructions/L3ModificationInstruction.java
@@ -84,7 +84,12 @@
         /**
          * Arp operation modification.
          */
-        ARP_OP
+        ARP_OP,
+
+        /**
+         * IP DSCP operation modification.
+         */
+        IP_DSCP
     }
 
     /**
@@ -380,4 +385,50 @@
             return false;
         }
     }
+
+    /**
+     * Represents a L3 DSCP modification instruction.
+     */
+    public static final class ModDscpInstruction extends L3ModificationInstruction {
+
+        private final L3SubType subtype;
+        private final byte dscp;
+
+        ModDscpInstruction(L3SubType subtype, byte dscp) {
+            this.subtype = subtype;
+            this.dscp = dscp;
+        }
+
+        @Override
+        public L3SubType subtype() {
+            return this.subtype;
+        }
+
+        @Override
+        public String toString() {
+            return subtype().toString() + SEPARATOR + dscp();
+        }
+
+        @Override
+        public int hashCode() {
+            return Objects.hash(type(), subtype(), dscp());
+        }
+
+        public byte dscp() {
+            return this.dscp;
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            if (this == obj) {
+                return true;
+            }
+            if (obj instanceof ModDscpInstruction) {
+                ModDscpInstruction that = (ModDscpInstruction) obj;
+                return  Objects.equals(this.subtype(), that.subtype()) &&
+                        Objects.equals(this.dscp(), that.dscp());
+            }
+            return false;
+        }
+    }
 }
