bdi-network-resilience
Changes
network-resilience/run-gateway.sh 1(+1 -0)
Details
diff --git a/network-resilience/compile-gateway.sh b/network-resilience/compile-gateway.sh
new file mode 100644
index 0000000..a3f9a52
--- /dev/null
+++ b/network-resilience/compile-gateway.sh
@@ -0,0 +1,2 @@
+find ./src -name "*.java" > allSource.log
+javac -classpath ./lib/xmlrpc-client-3.1.3.jar:./lib/xmlrpc-common-3.1.3.jar:./lib/xmlrpc-server-3.1.3.jar:./lib/log4j-1.2.17.jar.jar:./lib/jade-4.3.2.jar.jar:./lib/commons-logging-1.1.3.jar:./lib/commons-codec-1.9.jar:./lib/bdi4jade.jar @allSource.log
network-resilience/run-gateway.sh 1(+1 -0)
diff --git a/network-resilience/run-gateway.sh b/network-resilience/run-gateway.sh
new file mode 100644
index 0000000..f2f68d0
--- /dev/null
+++ b/network-resilience/run-gateway.sh
@@ -0,0 +1 @@
+java -cp ./lib/xmlrpc-client-3.1.3.jar:./lib/xmlrpc-common-3.1.3.jar:./lib/xmlrpc-server-3.1.3.jar:./lib/log4j-1.2.17.jar.jar:./lib/jade-4.3.2.jar.jar:./lib/commons-logging-1.1.3.jar:./lib/commons-codec-1.9.jar:./lib/bdi4jade.jar:./src br.ufrgs.inf.bdinetr.BDINetRApp
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/agent/RateLimiterCapability.java b/network-resilience/src/br/ufrgs/inf/bdinetr/agent/RateLimiterCapability.java
index 054a4e0..d383e93 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/agent/RateLimiterCapability.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/agent/RateLimiterCapability.java
@@ -129,9 +129,9 @@ public class RateLimiterCapability extends RouterAgentCapability {
}
}
- public static final double FLOW_LIMIT_RATE = 0.5;
- public static final double IP_LIMIT_RATE = 0.5;
- public static final double LINK_LIMIT_RATE = 0.5;
+ public static final double FLOW_LIMIT_RATE = 90;
+ public static final double IP_LIMIT_RATE = 50;
+ public static final double LINK_LIMIT_RATE = 90;
private static final long serialVersionUID = -1705728861020677126L;
@bdi4jade.annotation.Plan
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/omnet/OMNeTAnomalyDetection.java b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/omnet/OMNeTAnomalyDetection.java
index e0c644d..6ae53bc 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/omnet/OMNeTAnomalyDetection.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/omnet/OMNeTAnomalyDetection.java
@@ -22,6 +22,7 @@
package br.ufrgs.inf.bdinetr.domain.omnet;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.Set;
import br.ufrgs.inf.bdinetr.domain.AnomalyDetection;
@@ -37,25 +38,43 @@ import br.ufrgs.inf.bdinetr.domain.omnet.event.AnomalousEvent;
public class OMNeTAnomalyDetection extends OMNeTRouterComponent implements
AnomalyDetection, Observer {
+ private final Set<AnomalousEvent> events;
+
public OMNeTAnomalyDetection(Router router) {
super(router);
+ this.events = new HashSet<>();
EventBroker.getInstance().attachObserver(this);
}
@Override
public Set<Ip> detectIntrusion(Link link) {
- Set<Ip> intrusions = new HashSet<>();
- if (link.getId().equals("AFFECTED_LINK")) {
- intrusions.add(new Ip("victim1"));
- intrusions.add(new Ip("victim2"));
+ synchronized (events) {
+ while (events.isEmpty()) {
+ try {
+ events.wait();
+ } catch (InterruptedException e) {
+ log.warn(e);
+ }
+ }
+
+ Set<Ip> outliers = new HashSet<>();
+ Iterator<AnomalousEvent> it = events.iterator();
+ while (it.hasNext()) {
+ AnomalousEvent event = it.next();
+ outliers.add(event.getIp());
+ it.remove();
+ }
+ return outliers;
}
- return intrusions;
}
@Override
public void update(Object o, Object arg) {
if (arg instanceof AnomalousEvent) {
- // TODO Auto-generated method stub
+ synchronized (events) {
+ events.add((AnomalousEvent) arg);
+ events.notifyAll();
+ }
}
}
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/omnet/OMNeTClassifier.java b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/omnet/OMNeTClassifier.java
index e9333b3..e4042ac 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/omnet/OMNeTClassifier.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/omnet/OMNeTClassifier.java
@@ -22,6 +22,7 @@
package br.ufrgs.inf.bdinetr.domain.omnet;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.Set;
import br.ufrgs.inf.bdinetr.domain.Classifier;
@@ -37,30 +38,43 @@ import br.ufrgs.inf.bdinetr.domain.omnet.event.ThreatEvent;
public class OMNeTClassifier extends OMNeTRouterComponent implements
Classifier, Observer {
+ private final Set<ThreatEvent> events;
+
public OMNeTClassifier(Router router) {
super(router);
+ this.events = new HashSet<>();
EventBroker.getInstance().attachObserver(this);
}
@Override
public Set<Flow> classifyFlows(Ip ip) {
- Set<Flow> flows = new HashSet<>();
- if (ip.getAddress().equals("victim1")) {
- flows.add(new Flow(new Ip("DDoS1"), 80, new Ip("victim1"), 80,
- "http"));
- flows.add(new Flow(new Ip("DDoS2"), 80, new Ip("victim1"), 80,
- "http"));
- } else if (ip.getAddress().equals("victim2")) {
- flows.add(new Flow(new Ip("DDoS3"), 80, new Ip("victim2"), 80,
- "http"));
+ synchronized (events) {
+ while (events.isEmpty()) {
+ try {
+ events.wait();
+ } catch (InterruptedException e) {
+ log.warn(e);
+ }
+ }
+
+ Set<Flow> flows = new HashSet<>();
+ Iterator<ThreatEvent> it = events.iterator();
+ while (it.hasNext()) {
+ ThreatEvent event = it.next();
+ flows.add(event.getFlow());
+ it.remove();
+ }
+ return flows;
}
- return flows;
}
@Override
public void update(Object o, Object arg) {
if (arg instanceof ThreatEvent) {
- // TODO Auto-generated method stub
+ synchronized (events) {
+ events.add((ThreatEvent) arg);
+ events.notifyAll();
+ }
}
}
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/omnet/OMNeTRateLimiter.java b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/omnet/OMNeTRateLimiter.java
index 396b75a..97847c6 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/omnet/OMNeTRateLimiter.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/omnet/OMNeTRateLimiter.java
@@ -45,7 +45,7 @@ public class OMNeTRateLimiter extends OMNeTRouterComponent implements
params[1] = flow.getSrcIp().getAddress();
params[2] = flow.getDstIp().getAddress();
params[3] = flow.getProtocol();
- params[4] = new Integer(90); // FIXME
+ params[4] = rate;
invoke("limitflow", params);
}
@@ -54,7 +54,7 @@ public class OMNeTRateLimiter extends OMNeTRouterComponent implements
Object[] params = new Object[3];
params[0] = "Inet.sas1.core0.rateLimiter";
params[1] = ip.getAddress();
- params[2] = new Integer(50); // FIXME
+ params[2] = rate;
invoke("limitip", params);
}
@@ -63,7 +63,7 @@ public class OMNeTRateLimiter extends OMNeTRouterComponent implements
Object[] params = new Object[3];
params[0] = "Inet.sas1.core0.rateLimiter";
params[1] = link.getId();
- params[2] = new Integer(90); // FIXME
+ params[2] = rate;
invoke("limitlink", params);
notifyObservers(new LimitLinkEvent(link));