diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingDhcpHandler.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingDhcpHandler.java
index 27e8031..0b751e6 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingDhcpHandler.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingDhcpHandler.java
@@ -29,6 +29,7 @@
 import org.onlab.packet.Ethernet;
 import org.onlab.packet.IPv4;
 import org.onlab.packet.Ip4Address;
+import org.onlab.packet.IpAddress;
 import org.onlab.packet.IpPrefix;
 import org.onlab.packet.MacAddress;
 import org.onlab.packet.TpPort;
@@ -97,7 +98,8 @@
 
     private static final String DHCP_SERVER_MAC = "dhcpServerMac";
     private static final String DHCP_DATA_MTU = "dhcpDataMtu";
-    private static final Ip4Address DEFAULT_DNS = Ip4Address.valueOf("8.8.8.8");
+    private static final Ip4Address DEFAULT_PRIMARY_DNS = Ip4Address.valueOf("8.8.8.8");
+    private static final Ip4Address DEFAULT_SECONDARY_DNS = Ip4Address.valueOf("8.8.4.4");
     private static final byte PACKET_TTL = (byte) 127;
     // TODO add MTU, static route option codes to ONOS DHCP and remove here
     private static final byte DHCP_OPTION_MTU = (byte) 26;
@@ -394,9 +396,30 @@
 
             // domain server
             option = new DhcpOption();
+
+            List<String> dnsServers = osSubnet.getDnsNames();
             option.setCode(OptionCode_DomainServer.getValue());
-            option.setLength((byte) 4);
-            option.setData(DEFAULT_DNS.toOctets());
+
+            if (dnsServers.isEmpty()) {
+                option.setLength((byte) 8);
+                ByteBuffer dnsByteBuf = ByteBuffer.allocate(8);
+                dnsByteBuf.put(DEFAULT_PRIMARY_DNS.toOctets());
+                dnsByteBuf.put(DEFAULT_SECONDARY_DNS.toOctets());
+
+                option.setData(dnsByteBuf.array());
+            } else {
+                int dnsLength = 4 * dnsServers.size();
+
+                option.setLength((byte) dnsLength);
+
+                ByteBuffer dnsByteBuf = ByteBuffer.allocate(8);
+
+                for (int i = 0; i < dnsServers.size(); i++) {
+                    dnsByteBuf.put(IpAddress.valueOf(dnsServers.get(i)).toOctets());
+                }
+                option.setData(dnsByteBuf.array());
+            }
+
             options.add(option);
 
             option = new DhcpOption();
diff --git a/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingDhcpHandlerTest.java b/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingDhcpHandlerTest.java
index fed268f..1206ce3 100644
--- a/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingDhcpHandlerTest.java
+++ b/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingDhcpHandlerTest.java
@@ -426,7 +426,7 @@
 
             @Override
             public List<String> getDnsNames() {
-                return null;
+                return Lists.newArrayList();
             }
 
             @Override
