Simulation is a fundamental tool to design networks and protocols. NS3 is a feature-rich and widely-used open source network simulator. BGP is probably the most fundamental routing protocol on the Internet, since it is used at the highest level between network operators on a planetary scale. NS3 does not include an implementation of the BGP protocol. The goal of this project is to develop such an implementation.
Starting from scratch would be too ambitious. Fortunately, we have an initial implementation developed as a result (and follow-up) of a prior Bachelor project at USI in collaboration with a research and development team of an important network operator. We plan to continue that development and, most importantly, the use of the BGP simulation to support the design of a large network. Knowledge areas: computer networking, programming in C++.
Customers connect to their Internet service provider (ISP) using a Wi-Fi access link. We want to optimize the assignment of frequencies of the access points to avoid interference and maximize connectivity. This amounts to solving is an interesting non-trivial combinatorial optimization problem. We will explore various algorithms and models to solve this problem.
The EOLO network is based on switches that are designed, developed and maintained internally by EOLO. The goal of this project is (1) designing and implementing a staging environment for BLUos, the operating system running on EOLO switches, and (2) assessing their performe once deployed in production. Nowadays, EOLO engineers run tests through open-source (i.e., Ostinato) and proprietary (i.e., Spirent) technologies, which allow for the generation of custom streams of traffic. This practice allows to test both the proper functioning of BLUos and, with the help of iMIX patters, low-level dataplane processing capabilities. On the other hand, it fails in providing reliable outcomes for control-plane behaviors.
The main challenge EOLO is facing is defining a staging module for their deployment architecture that could stress in a meaningful and realistic way all the components of BLUos (FRR, Open vSwitch, DPDK-based framework, PPP server and DHCP relay). This is because it is difficult to replicate production-like behaviors of control-plane processes and routing protocols in a lab. This task is further complicated by the fact that the behavior of a router changes depending on its position in the network topology. The testing framework needs therefore some kind of parameterization by which the engineers could tune the simulation according to the specific test they need to run.
A bit more formally, a content-based network is one where senders can send messages and receivers can declare their interests by posting predicates. A predicate is a Boolean expression that, applied to a message, evaluates to true if the message is of interest to a receiver.
I have been working on developing the bits and pieces of this idea for a while (you can find more information and pointers on what I have done information is available here). As part of my initial effort, I have developed a distributed publish/subscribe system called Siena. Although Siena was very useful as a first prototype, I think it is now time to go back and revisit the design of the Siena system in a fundamental way.
The ultimate goal for this project is to design and develop a high-performance, robust and yet extensible content-based router. This router should be robust enough to support sizeable deployments, and at the same time it should serve as a platform to experiment with routing protocols and forwarding algorithms, etc. The following is a list of sub-projects that should contribute to this ultimate goal.
There are many new ideas on how to route messages based on their content. Some programs Protocol would play the role of the IP protocol in the Internet. It should define the format and semantics of messages and predicates, their structure, their meta-data, and all the necessary elements of the forwarding process. The design of this protocol should allow for minimal processing by routers, and yet allow for flexibility and extensibility of the protocol.
The next-generation content-based router must be based on a concrete protocol. This protocol would play the role of the IP protocol in the Internet. It should define the format and semantics of messages and predicates, their structure, their meta-data, and all the necessary elements of the forwarding process. The design of this protocol should allow for minimal processing by routers, and yet allow for flexibility and extensibility of the protocol.
This is the main structure of the router. Although future content-based routers might work on specialized hardware, the main idea is still to develop a "software" router on a general-purpose computer. A good design for this router structure is essential to guarantee high performance and robustness, and at the same time extensibility. Part of the extensibility means being able to operate on overlay links as well as directly on lower-level communication primitives.
One of the most mature components of the Siena Next-Generation router is the SFF forwarding module. This component is an obvious candidate for integration and use as a matching algorithm within a next-generation Siena router. Besides that, the SFF algorithm could be extended to a new, more powerful family of predicates. This project involves the design and development of new types of predicate-matching algorithms based on SFF.
The idea of this project is to study content-based publish/subscribe communication patterns by looking at blog posts, twitter feeds, cooperative tagging, and other such Web communication systems. In other words, we want to understand, at a high-level, who is interested in what and where, who publishes what, when, how often, and where. In practice, this means finding and analyzing Web posts from various sources in order to deduce general patterns (e.g., common terms and common interests).
The idea of this project is to model systems, experiments, and testbeds, and to use these models to generate scripts that would automatically deploy a system onto a testbed, run the planned experiments, and collect the experiment results.
These ideas have been explored by the Weevil project, which can serve as a basis for this project.
Experimentation means guided exploration. Given a set of parameters to be explored, the system should be able to use a variety of techniques to explore the data space. This could include linear and logarithmic search, genetic algorithms, and other types of optimization and statistical techniques.
After or even during the exploration of the parameter space, the results of a set of experiments must be gathered and analyzed. Statistical analysis and visualization will be important for understanding the large quantities of data. This could involve the creation of graphics, videos, and processed data files.