diff --git a/cli/src/main/java/org/onosproject/cli/net/InterfaceAddCommand.java b/cli/src/main/java/org/onosproject/cli/net/InterfaceAddCommand.java
index eefb711..4fd9b0d 100644
--- a/cli/src/main/java/org/onosproject/cli/net/InterfaceAddCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/InterfaceAddCommand.java
@@ -43,7 +43,7 @@
 
     @Option(name = "-m", aliases = "--mac",
             description = "MAC address of the interface",
-            required = true, multiValued = false)
+            required = false, multiValued = false)
     private String mac = null;
 
     @Option(name = "-i", aliases = "--ip",
@@ -68,10 +68,12 @@
             }
         }
 
+        MacAddress macAddr = mac == null ? null : MacAddress.valueOf(mac);
+
         VlanId vlanId = vlan == null ? VlanId.NONE : VlanId.vlanId(Short.parseShort(vlan));
 
         Interface intf = new Interface(ConnectPoint.deviceConnectPoint(connectPoint),
-                ipAddresses, MacAddress.valueOf(mac), vlanId);
+                ipAddresses, macAddr, vlanId);
 
         interfaceService.add(intf);
     }
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/config/basics/InterfaceConfig.java b/incubator/api/src/main/java/org/onosproject/incubator/net/config/basics/InterfaceConfig.java
index 592336c..9f2d410 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/config/basics/InterfaceConfig.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/config/basics/InterfaceConfig.java
@@ -39,7 +39,6 @@
     public static final String MAC = "mac";
     public static final String VLAN = "vlan";
 
-    public static final String MAC_MISSING_ERROR = "Must have a MAC address for each interface";
     public static final String CONFIG_VALUE_ERROR = "Error parsing config value";
 
     /**
@@ -55,15 +54,12 @@
             for (JsonNode intfNode : array) {
                 Set<InterfaceIpAddress> ips = getIps(intfNode);
 
-                if (intfNode.path(MAC).isMissingNode()) {
-                    throw new ConfigException(MAC_MISSING_ERROR);
-                }
-
-                MacAddress mac = MacAddress.valueOf(intfNode.path(MAC).asText());
+                String mac = intfNode.path(MAC).asText();
+                MacAddress macAddr = mac.isEmpty() ? null : MacAddress.valueOf(mac);
 
                 VlanId vlan = getVlan(intfNode);
 
-                interfaces.add(new Interface(subject, ips, mac, vlan));
+                interfaces.add(new Interface(subject, ips, macAddr, vlan));
             }
         } catch (IllegalArgumentException e) {
             throw new ConfigException(CONFIG_VALUE_ERROR, e);
@@ -79,7 +75,10 @@
      */
     public void addInterface(Interface intf) {
         ObjectNode intfNode = array.addObject();
-        intfNode.put(MAC, intf.mac().toString());
+
+        if (intf.mac() != null) {
+            intfNode.put(MAC, intf.mac().toString());
+        }
 
         if (!intf.ipAddresses().isEmpty()) {
             intfNode.set(IPS, putIps(intf.ipAddresses()));
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/intf/Interface.java b/incubator/api/src/main/java/org/onosproject/incubator/net/intf/Interface.java
index 69d14bc..b9d3ead 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/intf/Interface.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/intf/Interface.java
@@ -30,7 +30,8 @@
 
 /**
  * An Interface maps network configuration information (such as addresses and
- * vlans) to a port in the network.
+ * vlans) to a port in the network. This is considered a L2/L3 network
+ * interface.
  */
 @Beta
 public class Interface {
@@ -51,9 +52,9 @@
                      Set<InterfaceIpAddress> ipAddresses,
                      MacAddress macAddress, VlanId vlan) {
         this.connectPoint = checkNotNull(connectPoint);
-        this.ipAddresses = Sets.newHashSet(checkNotNull(ipAddresses));
-        this.macAddress = checkNotNull(macAddress);
-        this.vlan = checkNotNull(vlan);
+        this.ipAddresses = ipAddresses == null ? Sets.newHashSet() : ipAddresses;
+        this.macAddress = macAddress == null ? MacAddress.NONE : macAddress;
+        this.vlan = vlan == null ? VlanId.NONE : vlan;
     }
 
     /**
diff --git a/utils/misc/src/main/java/org/onlab/packet/MacAddress.java b/utils/misc/src/main/java/org/onlab/packet/MacAddress.java
index 89cddba..cb7f201 100644
--- a/utils/misc/src/main/java/org/onlab/packet/MacAddress.java
+++ b/utils/misc/src/main/java/org/onlab/packet/MacAddress.java
@@ -22,6 +22,7 @@
  */
 public class MacAddress {
 
+    public static final MacAddress NONE = valueOf("a4:23:05:00:00:00");
     public static final MacAddress ZERO = valueOf("00:00:00:00:00:00");
     public static final MacAddress BROADCAST = valueOf("ff:ff:ff:ff:ff:ff");
 
