diff --git a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtRouter.java b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtRouter.java
index f6a9545..84a5998 100644
--- a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtRouter.java
+++ b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtRouter.java
@@ -18,6 +18,7 @@
 import com.google.common.base.MoreObjects;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
+import org.onlab.packet.MacAddress;
 
 import java.util.HashMap;
 import java.util.HashSet;
@@ -37,6 +38,7 @@
     private final String name;
     private final String description;
     private final boolean enableSnat;
+    private final MacAddress mac;
     private final Set<String> internal;
     private final Map<String, String> external;
     private final KubevirtPeerRouter peerRouter;
@@ -48,12 +50,14 @@
      * @param name          router name
      * @param description   router description
      * @param enableSnat    snat use indicator
+     * @param mac           MAC address
      * @param internal      internal networks
      * @param external      external network
      * @param peerRouter    external peer router
      * @param gateway       elected gateway node id
      */
-    public DefaultKubevirtRouter(String name, String description, boolean enableSnat,
+    public DefaultKubevirtRouter(String name, String description,
+                                 boolean enableSnat, MacAddress mac,
                                  Set<String> internal,
                                  Map<String, String> external,
                                  KubevirtPeerRouter peerRouter,
@@ -61,6 +65,7 @@
         this.name = name;
         this.description = description;
         this.enableSnat = enableSnat;
+        this.mac = mac;
         this.internal = internal;
         this.external = external;
         this.peerRouter = peerRouter;
@@ -83,6 +88,11 @@
     }
 
     @Override
+    public MacAddress mac() {
+        return mac;
+    }
+
+    @Override
     public Set<String> internal() {
         if (internal == null) {
             return ImmutableSet.of();
@@ -116,6 +126,7 @@
                 .name(name)
                 .enableSnat(enableSnat)
                 .description(description)
+                .mac(mac)
                 .internal(internal)
                 .external(external)
                 .peerRouter(updated)
@@ -129,6 +140,7 @@
                 .name(name)
                 .enableSnat(enableSnat)
                 .description(description)
+                .mac(mac)
                 .internal(internal)
                 .external(external)
                 .peerRouter(peerRouter)
@@ -146,14 +158,14 @@
         }
         DefaultKubevirtRouter that = (DefaultKubevirtRouter) o;
         return enableSnat == that.enableSnat && name.equals(that.name) &&
-                description.equals(that.description) && internal.equals(that.internal) &&
-                external.equals(that.external) && peerRouter.equals(that.peerRouter) &&
-                gateway.equals(that.electedGateway());
+                description.equals(that.description) && mac.equals(that.mac) &&
+                internal.equals(that.internal) && external.equals(that.external) &&
+                peerRouter.equals(that.peerRouter) && gateway.equals(that.electedGateway());
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(name, description, enableSnat,
+        return Objects.hash(name, description, mac, enableSnat,
                 internal, external, peerRouter, gateway);
     }
 
@@ -163,6 +175,7 @@
                 .add("name", name)
                 .add("description", description)
                 .add("enableSnat", enableSnat)
+                .add("mac", mac)
                 .add("internal", internal)
                 .add("external", external)
                 .add("peerRouter", peerRouter)
@@ -184,6 +197,7 @@
         private String name;
         private String description;
         private boolean enableSnat;
+        private MacAddress mac;
         private Set<String> internal;
         private Map<String, String> external;
         private KubevirtPeerRouter peerRouter;
@@ -193,7 +207,7 @@
         public KubevirtRouter build() {
             checkArgument(name != null, NOT_NULL_MSG, "name");
 
-            return new DefaultKubevirtRouter(name, description, enableSnat,
+            return new DefaultKubevirtRouter(name, description, enableSnat, mac,
                     internal, external, peerRouter, gateway);
         }
 
@@ -216,6 +230,12 @@
         }
 
         @Override
+        public Builder mac(MacAddress mac) {
+            this.mac = mac;
+            return this;
+        }
+
+        @Override
         public Builder internal(Set<String> internal) {
             this.internal = Objects.requireNonNullElseGet(internal, HashSet::new);
             return this;
diff --git a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/KubevirtRouter.java b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/KubevirtRouter.java
index c7ae7b4..db62c77 100644
--- a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/KubevirtRouter.java
+++ b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/KubevirtRouter.java
@@ -15,6 +15,8 @@
  */
 package org.onosproject.kubevirtnetworking.api;
 
+import org.onlab.packet.MacAddress;
+
 import java.util.Map;
 import java.util.Set;
 
@@ -45,6 +47,13 @@
     boolean enableSnat();
 
     /**
+     * Returns the MAC address.
+     *
+     * @return mac address
+     */
+    MacAddress mac();
+
+    /**
      * Returns a set of internal networks.
      *
      * @return a set of internal networks
@@ -124,6 +133,14 @@
         Builder enableSnat(boolean flag);
 
         /**
+         * Returns kubevirt router builder with supplied MAC address.
+         *
+         * @param mac MAC address
+         * @return router builder
+         */
+        Builder mac(MacAddress mac);
+
+        /**
          * Returns kubevirt router builder with supplied internal networks.
          *
          * @param internal internal network set
diff --git a/apps/kubevirt-networking/api/src/test/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtRouterTest.java b/apps/kubevirt-networking/api/src/test/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtRouterTest.java
index 1ad8d87..644b839 100644
--- a/apps/kubevirt-networking/api/src/test/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtRouterTest.java
+++ b/apps/kubevirt-networking/api/src/test/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtRouterTest.java
@@ -39,6 +39,8 @@
     private static final String DESCRIPTION_2 = "dummy router 2";
     private static final boolean ENABLE_SNAT_1 = false;
     private static final boolean ENABLE_SNAT_2 = true;
+    private static final MacAddress MAC_ADDRESS_1 = MacAddress.valueOf("11:22:33:44:55:66");
+    private static final MacAddress MAC_ADDRESS_2 = MacAddress.valueOf("22:33:44:55:66:77");
     private static final KubevirtNetwork.Type TYPE_1 = FLAT;
     private static final KubevirtNetwork.Type TYPE_2 = VXLAN;
     private static final String NETWORK_NAME_1 = "net-1";
@@ -74,6 +76,7 @@
                 .name(NAME_1)
                 .description(DESCRIPTION_1)
                 .enableSnat(ENABLE_SNAT_1)
+                .mac(MAC_ADDRESS_1)
                 .internal(ImmutableSet.of(NETWORK_NAME_1))
                 .external(ImmutableMap.of("10.10.10.10", NETWORK_NAME_1))
                 .peerRouter(PEER_ROUTER_1)
@@ -83,6 +86,7 @@
                 .name(NAME_1)
                 .description(DESCRIPTION_1)
                 .enableSnat(ENABLE_SNAT_1)
+                .mac(MAC_ADDRESS_1)
                 .internal(ImmutableSet.of(NETWORK_NAME_1))
                 .external(ImmutableMap.of("10.10.10.10", NETWORK_NAME_1))
                 .peerRouter(PEER_ROUTER_1)
@@ -92,6 +96,7 @@
                 .name(NAME_2)
                 .description(DESCRIPTION_2)
                 .enableSnat(ENABLE_SNAT_2)
+                .mac(MAC_ADDRESS_2)
                 .internal(ImmutableSet.of(NETWORK_NAME_2))
                 .external(ImmutableMap.of("20.20.20.20", NETWORK_NAME_2))
                 .peerRouter(PEER_ROUTER_2)
@@ -119,6 +124,7 @@
         assertEquals(NAME_1, router.name());
         assertEquals(DESCRIPTION_1, router.description());
         assertEquals(ENABLE_SNAT_1, router.enableSnat());
+        assertEquals(MAC_ADDRESS_1, router.mac());
         assertEquals(ImmutableSet.of(NETWORK_NAME_1), router.internal());
         assertEquals(ImmutableMap.of("10.10.10.10", NETWORK_NAME_1), router.external());
         assertEquals(PEER_ROUTER_1, router.peerRouter());
