diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/agent/ClassifierCapability.java b/network-resilience/src/br/ufrgs/inf/bdinetr/agent/ClassifierCapability.java
index 955fd13..d12c3cd 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/agent/ClassifierCapability.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/agent/ClassifierCapability.java
@@ -74,10 +74,18 @@ public class ClassifierCapability extends RouterAgentCapability implements
if (event != null) {
if (GoalStatus.ACHIEVED.equals(event.getStatus())) {
Set<Flow> malicious = role.classifyFlows(ip);
+
for (Flow flow : malicious) {
belief(new Threat(flow), true);
}
- addBelief(new BenignBelief(new Benign(ip)));
+
+ //no more reports from classifier then we are done with this link
+ if(malicious.size() == 0){
+ addBelief(new BenignBelief(new Benign(ip)));
+ }
+ else{
+ setEndState(EndState.FAILED);
+ }
} else {
setEndState(EndState.FAILED);
}
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 b3d43fe..f545d87 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/agent/RateLimiterCapability.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/agent/RateLimiterCapability.java
@@ -129,7 +129,7 @@ public class RateLimiterCapability extends RouterAgentCapability {
}
}
- public static final int FLOW_LIMIT_RATE = 50;
+ public static final int FLOW_LIMIT_RATE = 90;
public static final int IP_LIMIT_RATE = 50;
public static final int LINK_LIMIT_RATE = 50;
private static final long serialVersionUID = -1705728861020677126L;
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/BDINetRApp.java b/network-resilience/src/br/ufrgs/inf/bdinetr/BDINetRApp.java
index 59f1618..07d06b6 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/BDINetRApp.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/BDINetRApp.java
@@ -123,10 +123,10 @@ public class BDINetRApp {
factory = new EscapeRouterComponentFactory();
//bdi4jade won't send any data to link monitor
NETWORK.addRouter(new Router(new Ip("whatever"), -1, "LINK_MONITOR", Role.LINK_MONITOR.getId(), factory));
- NETWORK.addRouter(new Router(new Ip("192.168.123.6"), 5550, "RATE_LIMITER", Role.RATE_LIMITER.getId(), factory));
- NETWORK.addRouter(new Router(new Ip("192.168.123.6"), 5551, "ANOMALY_DETECTION", Role.ANOMALY_DETECTION.getId(), factory));
- NETWORK.addRouter(new Router(new Ip("192.168.123.6"), 5552, "CLASSIFIER", Role.CLASSIFIER.getId(), factory));
- NETWORK.addRouter(new Router(new Ip("192.168.123.6"), 5553, "FLOW_EXPORTER", Role.FLOW_EXPORTER.getId(), factory));
+ NETWORK.addRouter(new Router(new Ip("10.0.0.101"), 5550, "RATE_LIMITER", Role.RATE_LIMITER.getId(), factory));
+ NETWORK.addRouter(new Router(new Ip("10.0.0.101"), 5551, "ANOMALY_DETECTION", Role.ANOMALY_DETECTION.getId(), factory));
+ NETWORK.addRouter(new Router(new Ip("10.0.0.101"), 5552, "CLASSIFIER", Role.CLASSIFIER.getId(), factory));
+ NETWORK.addRouter(new Router(new Ip("10.0.0.101"), 5553, "FLOW_EXPORTER", Role.FLOW_EXPORTER.getId(), factory));
break;
}
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/escape/EscapeClassifier.java b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/escape/EscapeClassifier.java
index 3db4794..50c145e 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/escape/EscapeClassifier.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/escape/EscapeClassifier.java
@@ -39,7 +39,7 @@ import br.ufrgs.inf.bdinetr.domain.omnet.event.ThreatEvent;
public class EscapeClassifier extends EscapeRouterComponent implements
Classifier, Observer {
- private static final long WAITING_TIME = 30000; //30s
+ private static final long WAITING_TIME = 20000;
private final Set<ThreatEvent> events;
@@ -52,8 +52,11 @@ public class EscapeClassifier extends EscapeRouterComponent implements
@Override
public Set<Flow> classifyFlows(Ip ip) {
synchronized (events) {
+ Set<Flow> flows = new HashSet<>();
+
long begin = System.currentTimeMillis();
long elapsed = System.currentTimeMillis() - begin;
+
while (events.isEmpty() || (elapsed < WAITING_TIME)) {
try {
log.info("Elapsed time: " + elapsed + " - Events empty: "
@@ -66,17 +69,18 @@ public class EscapeClassifier extends EscapeRouterComponent implements
log.warn(e);
}
}
-
+
log.info("Finished receiving Threat events. Elapsed time: "
- + elapsed);
+ + elapsed + " got " + events.size() + " messages.");
- 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;
}
}