diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/BDINetRApp.java b/network-resilience/src/br/ufrgs/inf/bdinetr/BDINetRApp.java
index cc9feea..f425e0e 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/BDINetRApp.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/BDINetRApp.java
@@ -72,7 +72,7 @@ public class BDINetRApp {
private static final Set<Link> AFFECTED_LINKS;
private static final Network NETWORK;
- private static final SimulationType SIMULATION_TYPE = SimulationType.SIMPLE_NETWORK;
+ private static final SimulationType SIMULATION_TYPE = SimulationType.ESCAPE;
static {
PropertyConfigurator.configure(BDINetRApp.class.getResource("log4j.properties"));
@@ -84,48 +84,49 @@ public class BDINetRApp {
switch (SIMULATION_TYPE) {
case OMNeT:
factory = new OMNeTRouterComponentFactory();
- NETWORK.addRouter(new Router(new Ip("Inet.sas1.core0.idsModule"), "ids_one", Role.ANOMALY_DETECTION.getId(),
+ NETWORK.addRouter(new Router(new Ip("Inet.sas1.core0.idsModule"), 8080, "ids_one", Role.ANOMALY_DETECTION.getId(),
factory));
- NETWORK.addRouter(new Router(new Ip("Inet.sas1.core0.linkMonitor"), "linkmonitor_one",
+ NETWORK.addRouter(new Router(new Ip("Inet.sas1.core0.linkMonitor"), 8080, "linkmonitor_one",
Role.LINK_MONITOR.getId(), factory));
- NETWORK.addRouter(new Router(new Ip("Inet.sas1.core0.classifier"), "classifier_one",
+ NETWORK.addRouter(new Router(new Ip("Inet.sas1.core0.classifier"), 8080, "classifier_one",
Role.CLASSIFIER.getId(), factory));
- NETWORK.addRouter(new Router(new Ip("Inet.sas1.core0.flowExporter"), "flowexporter_one",
+ NETWORK.addRouter(new Router(new Ip("Inet.sas1.core0.flowExporter"), 8080, "flowexporter_one",
Role.FLOW_EXPORTER.getId(), factory));
- NETWORK.addRouter(new Router(new Ip("Inet.sas1.core0.rateLimiter"), "ratelimiter_one",
+ NETWORK.addRouter(new Router(new Ip("Inet.sas1.core0.rateLimiter"), 8080, "ratelimiter_one",
Role.RATE_LIMITER.getId(), factory));
break;
case SIMPLE_NETWORK:
factory = new DummyRouterComponentFactory();
NETWORK.addRouter(
- new Router(new Ip("LC+RL"), Role.LINK_MONITOR.getId() | Role.RATE_LIMITER.getId(), factory));
+ new Router(new Ip("LC+RL"), -1, Role.LINK_MONITOR.getId() | Role.RATE_LIMITER.getId(), factory));
NETWORK.addRouter(
- new Router(new Ip("IPC+RL"), Role.ANOMALY_DETECTION.getId() | Role.RATE_LIMITER.getId(), factory));
+ new Router(new Ip("IPC+RL"), -1, Role.ANOMALY_DETECTION.getId() | Role.RATE_LIMITER.getId(), factory));
NETWORK.addRouter(
- new Router(new Ip("FC+RL"), Role.CLASSIFIER.getId() | Role.RATE_LIMITER.getId(), factory));
- NETWORK.addRouter(new Router(new Ip("FE"), Role.FLOW_EXPORTER.getId(), factory));
+ new Router(new Ip("FC+RL"), -1, Role.CLASSIFIER.getId() | Role.RATE_LIMITER.getId(), factory));
+ NETWORK.addRouter(new Router(new Ip("FE"), -1, Role.FLOW_EXPORTER.getId(), factory));
AFFECTED_LINKS.add(new Link("AFFECTED_LINK"));
break;
case COMPLEX_NETWORK:
factory = new DummyRouterComponentFactory();
- NETWORK.addRouter(new Router(new Ip("RouterLM"), Role.LINK_MONITOR.getId(), factory));
- NETWORK.addRouter(new Router(new Ip("RouterRL"), Role.RATE_LIMITER.getId(), factory));
- NETWORK.addRouter(new Router(new Ip("RouterAD"), Role.ANOMALY_DETECTION.getId(), factory));
- NETWORK.addRouter(new Router(new Ip("RouterCL"), Role.CLASSIFIER.getId(), factory));
+ NETWORK.addRouter(new Router(new Ip("RouterLM"), -1, Role.LINK_MONITOR.getId(), factory));
+ NETWORK.addRouter(new Router(new Ip("RouterRL"), -1, Role.RATE_LIMITER.getId(), factory));
+ NETWORK.addRouter(new Router(new Ip("RouterAD"), -1, Role.ANOMALY_DETECTION.getId(), factory));
+ NETWORK.addRouter(new Router(new Ip("RouterCL"), -1, Role.CLASSIFIER.getId(), factory));
NETWORK.addRouter(
- new Router(new Ip("RouterCL+FE"), Role.CLASSIFIER.getId() | Role.FLOW_EXPORTER.getId(), factory));
- NETWORK.addRouter(new Router(new Ip("RouterFE"), Role.FLOW_EXPORTER.getId(), factory));
+ new Router(new Ip("RouterCL+FE"), -1, Role.CLASSIFIER.getId() | Role.FLOW_EXPORTER.getId(), factory));
+ NETWORK.addRouter(new Router(new Ip("RouterFE"), -1, Role.FLOW_EXPORTER.getId(), factory));
AFFECTED_LINKS.add(new Link("AFFECTED_LINK"));
break;
case ESCAPE:
factory = new EscapeRouterComponentFactory();
- NETWORK.addRouter(new Router(new Ip("Link Monitor"), Role.LINK_MONITOR.getId(), factory));
- NETWORK.addRouter(new Router(new Ip("Rate Limiter"), Role.RATE_LIMITER.getId(), factory));
- NETWORK.addRouter(new Router(new Ip("Anomaly Detection"), Role.ANOMALY_DETECTION.getId(), factory));
- NETWORK.addRouter(new Router(new Ip("Classifier"), Role.CLASSIFIER.getId(), factory));
- NETWORK.addRouter(new Router(new Ip("Flow Exporter"), Role.FLOW_EXPORTER.getId(), factory));
+ //bdi4jade won't send any data to link monitor
+ NETWORK.addRouter(new Router(new Ip("whatever"), -1, Role.LINK_MONITOR.getId(), factory));
+ NETWORK.addRouter(new Router(new Ip("192.168.123.11"), 5550, Role.RATE_LIMITER.getId(), factory));
+ //NETWORK.addRouter(new Router(new Ip("Anomaly Detection"), Role.ANOMALY_DETECTION.getId(), factory));
+ NETWORK.addRouter(new Router(new Ip("192.168.123.11"), 5551, Role.CLASSIFIER.getId(), factory));
+ //NETWORK.addRouter(new Router(new Ip("Flow Exporter"), Role.FLOW_EXPORTER.getId(), factory));
// AFFECTED_LINKS.add(new Link("AFFECTED_LINK"));
break;
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/escape/EscapeRateLimiter.java b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/escape/EscapeRateLimiter.java
index f86a2bf..e6aa849 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/escape/EscapeRateLimiter.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/escape/EscapeRateLimiter.java
@@ -1,5 +1,5 @@
//----------------------------------------------------------------------------
-// Copyright (C) 2011 Ingrid Nunes, Frederico Schardong
+// Copyright (C) 2011 Ingrid Nunes
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
@@ -21,9 +21,6 @@
//----------------------------------------------------------------------------
package br.ufrgs.inf.bdinetr.domain.escape;
-import java.util.HashMap;
-import java.util.Map;
-
import br.ufrgs.inf.bdinetr.domain.Flow;
import br.ufrgs.inf.bdinetr.domain.Ip;
import br.ufrgs.inf.bdinetr.domain.LimitLinkEvent;
@@ -31,54 +28,63 @@ import br.ufrgs.inf.bdinetr.domain.Link;
import br.ufrgs.inf.bdinetr.domain.Observable;
import br.ufrgs.inf.bdinetr.domain.RateLimiter;
import br.ufrgs.inf.bdinetr.domain.Router;
+import br.ufrgs.inf.bdinetr.domain.omnet.OMNeTRouterComponent;
/**
- * @author Ingrid Nunes, Frederico Schardong
+ * @author Alberto Egon, Ingrid Nunes, Frederico Schardong
*/
-public class EscapeRateLimiter extends AbstractRouterComponent implements
+public class EscapeRateLimiter extends EscapeRouterComponent implements
RateLimiter, Observable {
- private final Map<Flow, Integer> rateLimitedflows;
- private final Map<Ip, Integer> rateLimitedIps;
- private final Map<Link, Integer> rateLimitedLinks;
-
public EscapeRateLimiter(Router router) {
super(router);
- this.rateLimitedLinks = new HashMap<>();
- this.rateLimitedIps = new HashMap<>();
- this.rateLimitedflows = new HashMap<>();
}
@Override
public void limitFlow(Flow flow, int rate) {
- this.rateLimitedflows.put(flow, rate);
+ Object[] params = new Object[5];
+ params[0] = router.getIp().getAddress();
+ params[1] = flow.getSrcIp().getAddress();
+ params[2] = flow.getDstIp().getAddress();
+ params[3] = flow.getProtocol();
+ params[4] = rate;
+ invoke("limitflow", params);
}
@Override
public void limitIp(Ip ip, int rate) {
- this.rateLimitedIps.put(ip, rate);
+ Object[] params = new Object[3];
+ params[0] = router.getIp().getAddress();
+ params[1] = ip.getAddress();
+ params[2] = rate;
+ invoke("limitip", params);
}
@Override
public void limitLink(Link link, int rate) {
- this.rateLimitedLinks.put(link, rate);
+ Object[] params = new Object[3];
+ params[0] = router.getIp().getAddress();
+ params[1] = link.getId();
+ params[2] = rate;
+ invoke("limitlink", params);
+
setChanged();
notifyObservers(new LimitLinkEvent(link));
}
@Override
public void unlimitFlow(Flow flow) {
- this.rateLimitedflows.remove(flow);
+ // TODO unsupported by OMNeT
}
@Override
public void unlimitIp(Ip ip) {
- this.rateLimitedIps.remove(ip);
+ // TODO unsupported by OMNeT
}
@Override
public void unlimitLink(Link link) {
- this.rateLimitedLinks.remove(link);
+ // TODO unsupported by OMNeT
}
}
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/Router.java b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/Router.java
index 92c283f..a18b5a6 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/Router.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/Router.java
@@ -31,15 +31,17 @@ public class Router {
private final Map<Role, RouterComponent> components;
private final Ip ip;
+ private final int port;
private final String type;
- public Router(final Ip ip, int roles, AbstractRouterComponentFactory factory) {
- this(ip, null, roles, factory);
+ public Router(final Ip ip, int port, int roles, AbstractRouterComponentFactory factory) {
+ this(ip, port, null, roles, factory);
}
- public Router(final Ip ip, final String type, int roles,
+ public Router(final Ip ip, int port, final String type, int roles,
AbstractRouterComponentFactory factory) {
this.ip = ip;
+ this.port = port;
this.type = type;
this.components = new HashMap<>();
for (Role role : Role.values()) {
@@ -71,6 +73,10 @@ public class Router {
return ip;
}
+ public int getPort() {
+ return port;
+ }
+
public RouterComponent getRole(Role role) {
return components.get(role);
}