diff --git a/utils/misc/src/main/java/org/onlab/packet/VlanId.java b/utils/misc/src/main/java/org/onlab/packet/VlanId.java
new file mode 100644
index 0000000..60daec7
--- /dev/null
+++ b/utils/misc/src/main/java/org/onlab/packet/VlanId.java
@@ -0,0 +1,71 @@
+package org.onlab.packet;
+
+/**
+ * Representation of a VLAN ID.
+ */
+// FIXME: This will end-up looking like a constant; we should name it 'VlanId', 'IpAddress', 'MacAddress'.
+public class VlanId {
+
+    private final short value;
+    // Based on convention used elsewhere? Check and change if needed
+    public static final short UNTAGGED = (short) 0xffff;
+    // A VLAN ID is actually 12 bits of a VLAN tag.
+    public static final short MAX_VLAN = 4095;
+
+    protected VlanId() {
+        this.value = UNTAGGED;
+    }
+
+    protected VlanId(short value) {
+        this.value = value;
+    }
+
+    public static VlanId vlanId() {
+        return new VlanId(UNTAGGED);
+    }
+
+    public static VlanId vlanId(short value) {
+        if (value == UNTAGGED) {
+            return new VlanId();
+        }
+
+        if (value > MAX_VLAN) {
+            throw new IllegalArgumentException(
+                    "value exceeds allowed maximum VLAN ID value (4095)");
+        }
+        return new VlanId(value);
+    }
+
+    public short toShort() {
+        return this.value;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+
+        if (obj instanceof VlanId) {
+
+            VlanId other = (VlanId) obj;
+
+             if (this.value == other.value) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return this.value;
+    }
+
+    @Override
+    public String toString() {
+        return String.valueOf(this.value);
+    }
+}
+
