diff --git a/core/api/src/main/java/org/onosproject/net/intent/constraint/BandwidthConstraint.java b/core/api/src/main/java/org/onosproject/net/intent/constraint/BandwidthConstraint.java
index 43b8e4b..20ccb55 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/constraint/BandwidthConstraint.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/constraint/BandwidthConstraint.java
@@ -16,6 +16,8 @@
 package org.onosproject.net.intent.constraint;
 
 import com.google.common.annotations.Beta;
+
+import org.onlab.util.DataRateUnit;
 import org.onosproject.net.Link;
 import org.onosproject.net.resource.link.BandwidthResource;
 import org.onosproject.net.resource.link.BandwidthResourceRequest;
@@ -32,7 +34,7 @@
  * Constraint that evaluates links based on available bandwidths.
  */
 @Beta
-public class BandwidthConstraint extends BooleanConstraint {
+public final class BandwidthConstraint extends BooleanConstraint {
 
     private final BandwidthResource bandwidth;
 
@@ -45,6 +47,17 @@
         this.bandwidth = checkNotNull(bandwidth, "Bandwidth cannot be null");
     }
 
+    /**
+     * Creates a new bandwidth constraint.
+     *
+     * @param v         required amount of bandwidth
+     * @param unit      {@link DataRateUnit} of {@code v}
+     * @return  {@link BandwidthConstraint} instance with given bandwidth requirement
+     */
+    public static BandwidthConstraint of(double v, DataRateUnit unit) {
+        return new BandwidthConstraint(BandwidthResource.of(v, unit));
+    }
+
     // Constructor for serialization
     private BandwidthConstraint() {
         this.bandwidth = null;
diff --git a/core/api/src/main/java/org/onosproject/net/resource/link/BandwidthResource.java b/core/api/src/main/java/org/onosproject/net/resource/link/BandwidthResource.java
index fe21e04..0bfb379 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/link/BandwidthResource.java
+++ b/core/api/src/main/java/org/onosproject/net/resource/link/BandwidthResource.java
@@ -16,7 +16,7 @@
 package org.onosproject.net.resource.link;
 
 import org.onlab.util.Bandwidth;
-
+import org.onlab.util.DataRateUnit;
 import java.util.Objects;
 
 import static com.google.common.base.Preconditions.checkNotNull;
@@ -43,6 +43,17 @@
     }
 
     /**
+     * Creates a new bandwidth resource.
+     *
+     * @param v         amount of bandwidth to request
+     * @param unit      {@link DataRateUnit} of {@code v}
+     * @return  {@link BandwidthResource} instance with given bandwidth
+     */
+    public static BandwidthResource of(double v, DataRateUnit unit) {
+        return new BandwidthResource(Bandwidth.of(v, unit));
+    }
+
+    /**
      * Returns bandwidth as a double value.
      *
      * @return bandwidth as a double value
diff --git a/core/api/src/test/java/org/onosproject/net/intent/HostToHostIntentTest.java b/core/api/src/test/java/org/onosproject/net/intent/HostToHostIntentTest.java
index f870df6..c3a9547 100644
--- a/core/api/src/test/java/org/onosproject/net/intent/HostToHostIntentTest.java
+++ b/core/api/src/test/java/org/onosproject/net/intent/HostToHostIntentTest.java
@@ -16,14 +16,12 @@
 package org.onosproject.net.intent;
 
 import org.junit.Test;
-import org.onlab.util.Bandwidth;
+import org.onlab.util.DataRateUnit;
 import org.onosproject.TestApplicationId;
 import org.onosproject.core.ApplicationId;
 import org.onosproject.net.HostId;
 import org.onosproject.net.flow.TrafficSelector;
 import org.onosproject.net.intent.constraint.BandwidthConstraint;
-import org.onosproject.net.resource.link.BandwidthResource;
-
 import com.google.common.collect.ImmutableList;
 import com.google.common.testing.EqualsTester;
 
@@ -109,8 +107,7 @@
 
     @Test
     public void testImplicitConstraintsAreAdded() {
-        final BandwidthConstraint other = new BandwidthConstraint(
-                                           new BandwidthResource(Bandwidth.gbps(1)));
+        final Constraint other = BandwidthConstraint.of(1, DataRateUnit.GBPS);
         final HostToHostIntent intent = HostToHostIntent.builder()
                 .appId(APPID)
                 .one(id1)
diff --git a/utils/misc/src/main/java/org/onlab/util/Bandwidth.java b/utils/misc/src/main/java/org/onlab/util/Bandwidth.java
index 349e660..6080656 100644
--- a/utils/misc/src/main/java/org/onlab/util/Bandwidth.java
+++ b/utils/misc/src/main/java/org/onlab/util/Bandwidth.java
@@ -42,6 +42,17 @@
     }
 
     /**
+     * Creates a new instance with given bandwidth.
+     *
+     * @param v         bandwidth value
+     * @param unit      {@link DataRateUnit} of {@code v}
+     * @return {@link Bandwidth} instance with given bandwidth
+     */
+    public static Bandwidth of(double v, DataRateUnit unit) {
+        return new Bandwidth(unit.toBitsPerSecond(v));
+    }
+
+    /**
      * Creates a new instance with given bandwidth in bps.
      *
      * @param bps bandwidth value to be assigned
diff --git a/utils/misc/src/main/java/org/onlab/util/DataRateUnit.java b/utils/misc/src/main/java/org/onlab/util/DataRateUnit.java
new file mode 100644
index 0000000..d49ed7b
--- /dev/null
+++ b/utils/misc/src/main/java/org/onlab/util/DataRateUnit.java
@@ -0,0 +1,64 @@
+package org.onlab.util;
+
+import com.google.common.annotations.Beta;
+
+/**
+ * Data rate unit.
+ */
+@Beta
+public enum DataRateUnit {
+    /**
+     * Bit per second.
+     */
+    BPS(1L),
+    /**
+     * Kilobit per second.
+     * (Decimal/SI)
+     */
+    KBPS(1_000L),
+    /**
+     * Megabit per second.
+     * (Decimal/SI)
+     */
+    MBPS(1_000_000L),
+    /**
+     * Gigabit per second.
+     * (Decimal/SI)
+     */
+    GBPS(1_000_000_000L);
+
+    private final long multiplier;
+
+    DataRateUnit(long multiplier) {
+        this.multiplier = multiplier;
+    }
+
+    /**
+     * Returns the multiplier to use, when converting value of this unit to bps.
+     *
+     * @return multiplier
+     */
+    public long multiplier() {
+        return multiplier;
+    }
+
+    /**
+     * Converts given value in this unit to bits per seconds.
+     *
+     * @param v data rate value
+     * @return {@code v} in bits per seconds
+     */
+    public long toBitsPerSecond(long v) {
+        return v * multiplier;
+    }
+
+    /**
+     * Converts given value in this unit to bits per seconds.
+     *
+     * @param v data rate value
+     * @return {@code v} in bits per seconds
+     */
+    public double toBitsPerSecond(double v) {
+        return v * multiplier;
+    }
+}
