diff options
Diffstat (limited to 'doc/design-paper/node-selection/vary-network-load.R')
-rw-r--r-- | doc/design-paper/node-selection/vary-network-load.R | 93 |
1 files changed, 0 insertions, 93 deletions
diff --git a/doc/design-paper/node-selection/vary-network-load.R b/doc/design-paper/node-selection/vary-network-load.R deleted file mode 100644 index e2b96dd01f..0000000000 --- a/doc/design-paper/node-selection/vary-network-load.R +++ /dev/null @@ -1,93 +0,0 @@ -## The waiting time for a node (assuming no overloaded nodes) -## x: 1/bandwidth -## q: selection probability -## L: network load -wait <- function(x,q,L) { - a <- q*L*x*x - b <- 2*(1-q*x*L) - return (x + a/b) -} - -## The weighted wait time -wwait <- function(x,q,L) { - return (q*wait(x,q,L)) -} - -## Average latency, returning NA for infinite -netLatency <- function(x, q, L) { - if (any(x*q*L <0 | x*q*L >1)) { - return (NA) - } else { - return (sum(wwait(x, q, L))) - } -} - -## Load in data files -t1 <- read.table("opt_1e-6.pickle.dat", header=TRUE) -t2 <- read.table("opt_1e-3.pickle.dat", header=TRUE) -t3 <- read.table("opt_1e-1.pickle.dat", header=TRUE) -t4 <- read.table("opt_0.75.pickle.dat", header=TRUE) -t5 <- read.table("opt_0.5.pickle.dat", header=TRUE) -t6 <- read.table("opt_0.25.pickle.dat", header=TRUE) -t7 <- read.table("opt_0.1.pickle.dat", header=TRUE) -tt <- read.table("opt_tor.pickle.dat", header=TRUE) - -## Node bandwidth and reciprocal -bw <- t1$bw -x <- 1/bw - -## Calculate network capcity -capacity <- sum(bw) - -## Calculate selection probabilties that Tor uses -torProb <- bw/sum(bw) - -## Load values to try -varyLoad <- seq(0.01,0.93,0.01) -latencyTor <- c() -latency3 <- c() -latency4 <- c() -latency5 <- c() -for (L in varyLoad) { - latencyTor <- append(latencyTor, - netLatency(x, torProb, capacity*L)) - latency3 <- append(latency3, - netLatency(x, t3$prob, capacity*L)) - latency4 <- append(latency4, - netLatency(x, t4$prob, capacity*L)) - latency5 <- append(latency5, - netLatency(x, t5$prob, capacity*L)) -} - -## Output graph -pdf("vary-network-load.pdf") - -## Set up axes -yFac <- 1000 -xFac <- 100 - -ylim <- range(na.omit(c(latencyTor, latency3, latency4, latency5))) -ylim <- c(0,0.015) * yFac -xlim <- c(0,1) * xFac -plot(NA, NA, - xlim=xlim, ylim=ylim, - frame.plot=FALSE, - xlab = "Network load (%)", - ylab = "Average queuing delay (ms)", - main = "Latency for varying network loads") - -## Plot data -col <- rainbow(8) -lines(varyLoad*xFac, latency3*yFac, col=col[3]) -lines(varyLoad*xFac, latency4*yFac, col=col[4]) -lines(varyLoad*xFac, latency5*yFac, col=col[5]) -lines(varyLoad*xFac, latencyTor*yFac) - -## Plot points at which selection probabilities are optimal -par(xpd=TRUE) -points(c(0.9, 0.75, 0.5, 1)*xFac, rep(par("usr")[3], 4), - col=c(col[3:5], "black"), pch=20, - cex=2) - -## Close output device -dev.off() |