This repository has been archived by the owner on Jan 6, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Stephen Johnson <[email protected]>
- Loading branch information
Stephen Johnson
committed
Apr 25, 2011
1 parent
a54fdf0
commit 5a7a070
Showing
19 changed files
with
9,387 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -8,4 +8,3 @@ paper.pdf | |
*.6 | ||
*.8 | ||
*.a | ||
papers/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
*.aux | ||
*.bbl | ||
*.blg | ||
*.log | ||
paper.pdf |
Large diffs are not rendered by default.
Oops, something went wrong.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
DOC = paper | ||
INCLUDE_BIB = yes | ||
|
||
%.pdf : %.dot | ||
dot -Tpdf $*.dot -o $*.pdf | ||
|
||
build: $(FIGS) | ||
ifeq ($(INCLUDE_BIB),yes) | ||
pdflatex $(DOC) > /dev/null | ||
bibtex $(DOC) > /dev/null | ||
pdflatex $(DOC) > /dev/null | ||
endif | ||
pdflatex $(DOC) > /dev/null | ||
|
||
kde: build | ||
kpdf $(DOC).pdf | ||
|
||
kde4: build | ||
okular $(DOC).pdf | ||
|
||
mac: build | ||
open $(DOC).pdf | ||
|
||
all: build | ||
|
||
clean: | ||
rm -f *.aux *.bbl *.blg *.log *.pdf |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
@Article{ meshsurvey, | ||
title = "A Survey on Wireless Mesh Networks", | ||
author = "Ian F. Akyildiz and Xudong Wang", | ||
journal = "IEEE Radio Communications", | ||
pages = "23--30", | ||
month = "Steptember", | ||
year = "2005" | ||
} | ||
|
||
@Article{ routing_performance, | ||
title = "Performance Analysis of On-Demand Routing Protocols in Wireless Mesh | ||
Networks", | ||
author = "Arafatur Rahman and Saiful Azad and Farhat Anwar", | ||
journal = "Informatica Economic\u{a}", | ||
volume = "13", | ||
number = "2", | ||
year = "2009" | ||
} | ||
|
||
@TechReport{ madhoc, | ||
title = "The Madhoc Metropolitan Adhoc | ||
Network Simulator", | ||
author = "Luc Hogie and Frederic Guinand and Pascal Bouvry", | ||
institution = "Le Havre University", | ||
year = "2005" | ||
} | ||
|
||
@TechReport{ swans, | ||
title = "SWANS - Scalable Wireless Ad hoc Network Simulator User Guide", | ||
author = "Rimon Barr", | ||
year = "2004" | ||
} | ||
|
||
@Article{ realistic_urban_sim, | ||
title = "Realistic Simulation of Urban Mesh Networks | ||
", | ||
author = "Vinay Sridhara and Stephan Bohacek", | ||
journal = "Computer Networks and ISDN Systems - CN", | ||
pages = "3392--3412", | ||
volume = "51", | ||
number = "12", | ||
year = "2007" | ||
} | ||
|
||
@Inproceedings{ glomosim, | ||
author = {Xiang Zeng and Rajive Bagrodia and Mario Gerla}, | ||
title = {{GloMoSim: A Library for Parallel Simulation of Large-scale Wireless Networks}}, | ||
booktitle = {in Workshop on Parallel and Distributed Simulation}, | ||
year = {1998}, | ||
pages = {154--161} | ||
} | ||
|
||
@misc{ns2, | ||
author = {Mccanne, S. and Floyd, S. and Fall, K.}, | ||
howpublished = {http://www-nrg.ee.lbl.gov/ns/}, | ||
title = {{ns2 (network simulator 2)}}, | ||
url = {http://www-nrg.ee.lbl.gov/ns} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
\section{Conclusion} | ||
|
||
This project has three layers. At the top layer, we want to refine a system that distributes work among several servers. At the middle layer, we want to implement a simulation. At the bottom layer, we want to use it as a testbed for ad-hoc wireless networks. For these reasons, we think it is a compelling course project. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
\section{Current State of the Project} | ||
|
||
The simulation contains \textbf{agents} which must be sent stimuli to respond to. The current implementation consists of a \textbf{master process} which connects to several \textbf{coordinator processes} that are responsible for keeping the state of disjoint sets of agent processes. | ||
|
||
The master process is responsible for connecting to the coordinators, sending them configurations, and waiting for their final responses. The coordinator connects to neighbor coordinators and agents, serves requests for information about the state of its agents in the last turn, and processes its own agents by requesting information from its neighbors and from its agents. In this way, the coordinators operate in lock-step, turn by turn, until all turns have been processed by all coordinators. | ||
|
||
The current version of the simulation only supports agent movement and agent death. Agents are killed when they both occupy the same cell. The master process and coordinators do not attempt to balance load after the simulation has begun. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
\section{Distributing Work} | ||
|
||
Part of this project will include dynamically balancing the load of communication between agents and coordinators. There are at least three possible approaches to this problem in the context of this simulation. | ||
|
||
The simplest way to assign agents to coordinators is to assign a constant number of agents to each agent coordinator at random or based on some positioning heuristic. No agents will ever change their coordinators. This strategy would create significant overhead from passing messages between agents on separate coordinators. | ||
|
||
A more efficient strategy would be to assign each coordinator a section of the grid and have coordinators hand off responsibility for agents at the borders between coordinators. This way, coordinators would only need to exchange agent messages when the agents are near coordinator borders. One downside of this strategy is that some coordinators may be responsible for many more agents than others if agents cluster in a few areas. | ||
|
||
This problem could be solved by allowing the master process to dynamically reallocate the space assigned to each coordinator. \textbf{This dynamic reassignment is very similar to the problem of assigning many application instances to many servers,} but in addition to simply trying to distribute CPU and memory load evenly, we are also trying to reduce the traffic between servers which must pass data to each other (agent broadcasts) for the simulation to be correct. |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
\section{Future Work} | ||
|
||
The most pressing implementation issue is the lack of choice of coordinator assignment strategy. The current version of the system assigns agents to coordinators statically. | ||
|
||
To make dynamic reassignment possible, a protocol to transfer ownership of an agent must be designed. The agent must be serialized and shut down, its serialized form must be sent from one coordinator to another, and the new coordinator must start a new process for it. | ||
|
||
More work should also go into designing and implementing more predictable failure behavior. | ||
|
||
\section{Other Possible Simulation Rules} | ||
|
||
The rules outlined in Section \ref{rules} describe a minimal environment to test the utility and efficiency of Tecellate. The rules outlined in this section may add more interesting mechanics to the simulation. | ||
|
||
\subsection{Factions} | ||
|
||
Agents are not currently identified with a faction and act essentially as free agents. Under faction rules, they would be divided into teams in a competition for survival. | ||
|
||
\subsection{More Sophisticated Movement/Death Rules} | ||
|
||
In the current version of Tecellate, two agents that move into the same cell are killed. This is a very simplistic rule, and could be replaced with a system of support. For example, consider two agents A and B that want to move into the same cell. If they are alone, then neither may move. If C is on A's team and adjacent to the target cell and B is alone, then A may move into the cell and B is destroyed because A and C ``teamed up'' on him. | ||
|
||
\subsection{Food} | ||
|
||
Agents must search the grid to find food. If their coordinator calculates that their food counter is below zero, they disappear from the grid. This rule would give agent programmers incentives to introduce distributed communication networks to inform faraway agents of abundant new food sources. | ||
|
||
\subsection{Reproduction} | ||
|
||
Two adjacent agents are able to produce a new agent if another adjacent cell is open and both agents have enough food to supply the new agent. The parent agents lose food in the act. | ||
|
||
\subsection{Cable Communication} | ||
|
||
Each agent can lay $x$ feet of cable. If an agent is over a cell with cable in it laid by its team, it can communicate instantly and without noise to other agents on the same cable. | ||
|
||
\subsection{Cable Warfare} | ||
|
||
If an agent is over a cell with cable in it laid by its enemy, it can destroy the cable. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
\section{Literature Survey} | ||
|
||
There are a few existing simulations of wireless ad hoc networks that operate above the link layer. One of these is ns2, which has been around for several years \cite{ns2}. ns2 simulates multiple kinds of networks and protocols, and it has been popular among researchers. However, it is difficult to scale above a few hundred nodes \cite{swans}. It has only been documented to scale to a few thousand nodes. | ||
|
||
GloMoSim is a newer simulator \cite{glomosim}. It serves a similar purpose to ns2 and can simulate both wired and wireless networks, but it is more scalable in that it can run its event loop in parallel \cite{swans}. It can scale to tens of thousands of nodes. | ||
|
||
SWANS is a simulator created purely for ad hoc wireless network research in response to the inadequacy of ns2 and GloMoSim for ad hoc wireless network research \cite{swans}. It has a different configuration/modeling style from other solutions which allows it to accurately simulate millions of nodes on 2004 hardware. | ||
|
||
A specialized wireless ad hoc network simulator is $madhoc$, a system that attempts to accurately model wireless network characteristics in metropolitan settings \cite{madhoc}. The authors argue that other simulators' node movement algorithms do not accurately model real world environments, and consequently spend a great deal of effort modeling the characteristics of metropolitan environments. | ||
|
||
These simulators differ from Tecellate in that they simulate a higher level of the network and provide no inherent goal for communicating agents. They also simulate radio signal propagation much more accurately, which affects the computation requirements drastically. They have sophisticated physics-based models of signal strength which must be updated and accounted for when sending and receiving transmissions, while we propose to use simpler probabilistic methods at the bit level. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
\documentclass[12pt]{article} | ||
\usepackage[margin=1in]{geometry} | ||
\usepackage{graphicx} | ||
\usepackage{setspace} | ||
\usepackage{url} | ||
|
||
\title{Tecellate: A Distributed Environment for Ad Hoc Wireless Network Simulations} | ||
\author{ | ||
Steve Johnson ([email protected])\\ | ||
Case Western Reserve University\\ | ||
\and Tim Henderson ([email protected])\\ | ||
Case Western Reserve University | ||
} | ||
\date{\today} | ||
|
||
\begin{document} | ||
\doublespacing | ||
\maketitle | ||
|
||
% \begin{multicols}{2} | ||
|
||
\begin{abstract} | ||
We want to build a simulation of a world in which autonomous agents can communicate using semi-realistic radio signals. The simulation itself can be distributed over multiple machines to allow for very large simulations. The purpose will be to test wireless ad-hoc network routing algorithms under arbitrarily harsh conditions. | ||
This project will be based on work done in the fall of 2010 in EECS 423 (Distributed Systems). The current implementation allows for very rudimentary setup and movement but not much else. | ||
\end{abstract} | ||
|
||
\section{Introduction} | ||
|
||
Network simulations have become important tools for researching mobile networks. Most research groups do not have the ability to purchase and use thousands of mobile devices for research and have thus turned to simulation. However, as many previous simulation authors have noted, simulations will always sacrifice some element of realism. We have decided to take a novel approach in these sacrifices adding a new way to test wireless mobile networks. | ||
|
||
The simulation we propose to develop would operate at the link layer. All \textbf{agents}, the actors in the simulation, have a radio that sends and receives bytes. Thus, unlike the real world where the radio would have to convert the radio waves to a digital signal, in the simulation this is assumed to be done for you. However, it is up the agents to ensure that their link level connectivity is accurate. The simulation includes complications like interference from other sources and exponential drop-off of power as agents move away from the source of a transmission. | ||
|
||
In the physical world, devices move around with purpose and transmit with purpose. We assert that the same should be true in a simulation. However, modeling the purpose of actual people is not feasible. Instead, we propose to give the agents an alternative purpose: to stay alive. Each agent has to ``eat'' to survive. Each turn, it eats a unit of food. If it runs of food, it dies. The goal of the agents is to stay alive as long as possible. Thus, it must find sources of food within the simulation. This game-like element provides the agents with goals and a purpose for communication. | ||
|
||
By modeling the communication at the link layer and adding game like elements to our simulation, we hope to provide an interesting test bed for networking and AI algorithms. The game-like element in our simulation will help ensure the agents move around purposefully in the simulation grid. The link layer simulation ensures that the communication problems which must be overcome for reliable communication are similar to real world problems. While, we do not think our simulation approach would be the final word in networks simulation, it should provide a useful platform for experimentation. | ||
|
||
\input{litsurvey} | ||
|
||
\input{world} | ||
|
||
\input{current} | ||
|
||
\input{distributed} | ||
|
||
\input{conclusion} | ||
|
||
\nocite{*} | ||
\bibliographystyle{acm} | ||
\bibliography{bibliography} | ||
|
||
\end{document} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
\section{Simulation Rules} | ||
\label{rules} | ||
|
||
The simulation is turn-based and runs over a fixed number of turns. The length of the turn is designed to simulate the time to send M packets. At the beginning of each turn, agents receive information about the terrain and other nearby agents. In response, agents can either attempt to move or remain still. During the turn the agents can also listen for messages and choose to broadcast their own. The broadcasts will be recieved by nearby agents during the next turn. When all agents have decided on an action for a turn, the actions are executed and a new turn begins. | ||
|
||
\subsection{World and Movement} | ||
|
||
The simulation world consists of a $w$*$h$ grid of signed integers. If the number is non-negative, it is the terrain height. Otherwise, the cell is impassable. An agent can move at most one cell up, down, left, or right per turn. The move action takes one extra turn for every absolute height unit difference above 1. If more than one agent attempt to move into the same cell, they are destroyed. | ||
|
||
Agents may be divided into competing factions, though this may be an implementation detail of the agents. | ||
|
||
\subsection{Messages} | ||
|
||
The broadcast messages agents can send are a simpilification of radio communication. There are $N$ frequencies an agent can broadcast on or listen too. An agent may broadcast a message of 1024 bytes on a single frequency. The agent may also listen for messages on $M$ frequencies each turn where $M \leq N$. | ||
|
||
Like radio communication, the messages broadcast decay over distance. When an agent listens to a frequency, the agent always recieves data. However, if no one is broadcasting on that frequency, the agent will recieve random data. Since the message decays over distance, even if an agent hears it some parts of the message may be corrupted. The farther away a listener is from a sender, the more corruption is in the message. | ||
|
||
Finally, if more than one message can be heard from the same position, the messages will be combined probabilistically. | ||
|
||
% Finally, if messages cross each other the following algorithm will be used to resolve the conflict. First, for each message the message will be corrupted based on its distance to its source, just as in the single broadcaster senario. Then, for each bit in each message their will be a probability K that the bit will be heard. The probablity will also be based on the distance to the source of the message. All of the bits that are heard are XORed together creating a composite message. If not bit are heard for a particular bit location a random value is chosen for that bit. | ||
|
||
\subsection{Perception} | ||
|
||
Agents may or may not be informed of their global position in the world. They also have some way of ``seeing'' nearby agents. | ||
|
||
\subsection{Food} | ||
|
||
Agents must search the grid to find food. If their coordinator calculates that their food counter is below zero, they disappear from the grid. | ||
|
||
\section{Usefulness of the Simulation} | ||
|
||
The simulation provides a close enough approximation of the real world to allow testing of high-level coordination algorithms to be tested using a very simple API. | ||
|
||
The rules for movement (1 delayed turn per cell height difference) and perception provide an opportunity to experiment with pathfinding algorithms in an environment where little information outside a limited area is available, similar to the conditions of the DARPA autonomous vehicle events. | ||
|
||
The rules for communication force agents to communicate with distant agents by passing messages through nearby agents, creating ad-hoc wireless networks. Our messaging system is meant to model the difficulties of real world radio communication. This will make our simulation a useful tool for simulating adhoc wireless networks allowing protocol research to be conducted without hardware. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
fold -w 100 $1 > $1 |