diff --git a/src/main/java/net/floodlightcontroller/forwarding/Forwarding.java b/src/main/java/net/floodlightcontroller/forwarding/Forwarding.java
index fa3fd4c88c58de6823a1997a30cf3b02429507b1..3bca6dae7797f2afa4294a4d0e54a1b94767adce 100644
--- a/src/main/java/net/floodlightcontroller/forwarding/Forwarding.java
+++ b/src/main/java/net/floodlightcontroller/forwarding/Forwarding.java
@@ -296,13 +296,24 @@ public class Forwarding extends ForwardingBase implements IFloodlightModule {
         this.routingEngine = context.getServiceImpl(IRoutingService.class);
         this.topology = context.getServiceImpl(ITopologyService.class);
         this.counterStore = context.getServiceImpl(ICounterStoreService.class);
+        
+        // read our config options
+        Map<String, String> configOptions = context.getConfigParams(this);
+        String idleTimeout = configOptions.get("idletimeout");
+        if (idleTimeout != null) {
+            FLOWMOD_DEFAULT_IDLE_TIMEOUT = Short.parseShort(idleTimeout);
+        }
+        
+        String hardTimeout = configOptions.get("hardtimeout");
+        if (hardTimeout != null) {
+            FLOWMOD_DEFAULT_HARD_TIMEOUT = Short.parseShort(hardTimeout);
+        }
+        log.debug("FlowMod idle timeout set to {} seconds", FLOWMOD_DEFAULT_IDLE_TIMEOUT);
+        log.debug("FlowMod hard timeout set to {} seconds", FLOWMOD_DEFAULT_HARD_TIMEOUT);
     }
 
     @Override
     public void startUp(FloodlightModuleContext context) {
-        if (log.isDebugEnabled()) {
-            log.debug("Starting " + this.getClass().getCanonicalName());
-        }
         super.startUp();
     }
 }
diff --git a/src/main/java/net/floodlightcontroller/routing/ForwardingBase.java b/src/main/java/net/floodlightcontroller/routing/ForwardingBase.java
index 32525a8c8b5654fae27ee345295864aceada1a71..2bf93bf81c779ed19e2a3c2e78b89f0540e98cff 100644
--- a/src/main/java/net/floodlightcontroller/routing/ForwardingBase.java
+++ b/src/main/java/net/floodlightcontroller/routing/ForwardingBase.java
@@ -54,14 +54,15 @@ import org.openflow.protocol.action.OFActionOutput;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public abstract class ForwardingBase implements
-    IOFMessageListener,
-    IDeviceListener {
-    protected static Logger log =
+public abstract class ForwardingBase 
+	implements IOFMessageListener, IDeviceListener {
+    
+	protected static Logger log =
             LoggerFactory.getLogger(ForwardingBase.class);
 
-    public static final short FLOWMOD_DEFAULT_HARD_TIMEOUT = 5; // in seconds
-
+    public static short FLOWMOD_DEFAULT_IDLE_TIMEOUT = 5; // in seconds
+    public static short FLOWMOD_DEFAULT_HARD_TIMEOUT = 0; // infinite
+    
     protected IFloodlightProviderService floodlightProvider;
     protected IDeviceService deviceManager;
     protected IRoutingService routingEngine;
@@ -96,7 +97,7 @@ public abstract class ForwardingBase implements
     /**
      * Adds a listener for devicemanager and registers for PacketIns.
      */
-    public void startUp() {
+    protected void startUp() {
         deviceManager.addListener(this);
         floodlightProvider.addOFMessageListener(OFType.PACKET_IN, this);
     }
@@ -186,7 +187,8 @@ public abstract class ForwardingBase implements
         List<OFAction> actions = new ArrayList<OFAction>();
         actions.add(action);
 
-        fm.setIdleTimeout((short)5)
+        fm.setIdleTimeout(FLOWMOD_DEFAULT_IDLE_TIMEOUT)
+        	.setHardTimeout(FLOWMOD_DEFAULT_HARD_TIMEOUT)
             .setBufferId(OFPacketOut.BUFFER_ID_NONE)
             .setCookie(cookie)
             .setCommand(flowModCommand)
@@ -562,7 +564,8 @@ public abstract class ForwardingBase implements
                      & ~OFMatch.OFPFW_IN_PORT);
         fm.setCookie(cookie)
           .setHardTimeout((short) hardTimeout)
-          .setIdleTimeout((short) 5)
+          .setIdleTimeout(FLOWMOD_DEFAULT_IDLE_TIMEOUT)
+          .setHardTimeout(FLOWMOD_DEFAULT_HARD_TIMEOUT)
           .setBufferId(OFPacketOut.BUFFER_ID_NONE)
           .setMatch(match)
           .setActions(actions)
diff --git a/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilter.java b/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilter.java
index 78d650779f63ca5b930b5f073b07ff270ad01ed2..214213d358547bac13b7b1bf1d59c8efc234da3d 100644
--- a/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilter.java
+++ b/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilter.java
@@ -40,6 +40,7 @@ import net.floodlightcontroller.packet.Ethernet;
 import net.floodlightcontroller.packet.IPacket;
 import net.floodlightcontroller.packet.IPv4;
 import net.floodlightcontroller.restserver.IRestApiService;
+import net.floodlightcontroller.routing.ForwardingBase;
 import net.floodlightcontroller.util.MACAddress;
 
 /**
@@ -59,7 +60,6 @@ public class VirtualNetworkFilter
     implements IFloodlightModule, IVirtualNetworkService, IOFMessageListener, IDeviceListener {
     protected static Logger log = LoggerFactory.getLogger(VirtualNetworkFilter.class);
     
-    private final short FLOW_MOD_DEFAULT_IDLE_TIMEOUT = 5; // in seconds
     private final short APP_ID = 20;
     
     // Our dependencies
@@ -425,8 +425,8 @@ public class VirtualNetworkFilter
         List<OFAction> actions = new ArrayList<OFAction>(); // no actions = drop
         long cookie = AppCookie.makeCookie(APP_ID, 0);
         fm.setCookie(cookie)
-        .setIdleTimeout(FLOW_MOD_DEFAULT_IDLE_TIMEOUT)
-        .setHardTimeout((short) 0)
+        .setIdleTimeout(ForwardingBase.FLOWMOD_DEFAULT_IDLE_TIMEOUT)
+        .setHardTimeout(ForwardingBase.FLOWMOD_DEFAULT_HARD_TIMEOUT)
         .setBufferId(OFPacketOut.BUFFER_ID_NONE)
         .setMatch(match)
         .setActions(actions)
diff --git a/src/main/resources/floodlightdefault.properties b/src/main/resources/floodlightdefault.properties
index 9bcf7fd2a708075f6c147b558df5c7520746111b..4b6fe1658c74d767ab3a257156cdd086c18749ab 100644
--- a/src/main/resources/floodlightdefault.properties
+++ b/src/main/resources/floodlightdefault.properties
@@ -10,4 +10,6 @@ net.floodlightcontroller.perfmon.PktInProcessingTime,\
 net.floodlightcontroller.ui.web.StaticWebRoutable
 net.floodlightcontroller.restserver.RestApiServer.port = 8080
 net.floodlightcontroller.core.FloodlightProvider.openflowport = 6633
-net.floodlightcontroller.jython.JythonDebugInterface.port = 6655
\ No newline at end of file
+net.floodlightcontroller.jython.JythonDebugInterface.port = 6655
+net.floodlightcontroller.forwarding.Forwarding.idletimeout = 5
+net.floodlightcontroller.forwarding.Forwarding.hardtimeout = 0
\ No newline at end of file