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