Routing is most implemented control algorithm in a network. Routing is the act of moving packets across the network from a source to a destination. It involves two basic activities: determining the optimal routing paths and forwarding the packets through a network. The complexity of routing algorithm lies in the path determination.
An optimal routing algorithm selects the best route based on the basis of the current network conditions and the target metrics. In large-scale networks, collecting network conditions can be difficult to accomplish in realtime. A scalable and optimal routing algorithm must be able to measure the network at scale in a distributed manner and aggregate the result efficiently for a routing algorithm to consume.
A programmable dataplane can provide a flexible substrate to implement a fast and responsive routing algorithm in the dataplane in a distributed manner. Each dataplane in a network element can monitor network conditions simultaneously and, thus, alleviate the need for a powerful centralized routing control platform. Because each network element can react to traffic conditions locally, response to network events, such as failure or congestion, can be instant. A future direction could look into how to measure and implement a network routing algorithm using a programmable dataplane.
CHAPTER 7 CONCLUSIONS
At the time of writing this dissertation, network dataplane implementation often is a trade-off between flexibility and performance. Furthermore, programming a reconfig- urable device, such as FPGAs, requires hardware domain expertise, which many net- work programmers do not have. Finally, parts of the network dataplane are not pro- grammable at all.
We have explored a new approach to building a programmable dataplane that bal- ances flexibility and performance. In particular, we investigate two building blocks of the network dataplane programming for network devices: the packet processing pipeline and the network device interface. By leveraging a good packet processing abstraction called the match-action pipeline and a domain specific language built on top of the ab- straction, developers can program the network dataplane to implement a variety of novel applications. Furthermore, by opening the inner workings of the physical layer, devel- opers can study networks and the network stack at a heretofore inaccessible level, with the precision of network measurements improved by orders of magnitude.
To validate our approach, we have described the design, implementation and evalua- tion of two systems that together constitute steps towards an instance of a programmable dataplane. P4FPGA is an instance of a dataplane language compiler and runtime that enables a programmable packet processing pipeline. SoNIC is an instance of a pro- grammable physical layer that implements the physical layer of the network protocol stack in software. We also have shown a number of applications are enabled by these two systems: a network accelerated consensus protocol, a precise bandwidth estimation tool, and an accurate data center clock synchronization protocol.
A programmable network dataplane provides high-performance, customized packet processing and, therefore, it decouples the task of network programming from the hard- ware that realizes the implementation. This decoupling is an important step toward the further optimization of cloud computing and networking resources. A network function can be placed on any device on a network path or distributed among multiple network devices without significant engineering efforts. As the driven force behind the next gen- eration of software defined networking, the programmable dataplane will affect not just how network devices are built, but the entire networking ecosystem.
APPENDIX A NETWORK CONCEPTS
A basic understanding of networking is important to understand the contributions of this dissertation. In this section, we provide a brief overview of common networking concepts. We discuss basic terminology, common protocols, and the functionalities of different layers of networking.
A.1
Networking Basic Terminology
First, we define some common terms in networking.
Packet A packet is, generally speaking, the most basic unit that is transfered over a network. When communicating over a network, packets are the envelopes that carry data in pieces from one end point to the other. Packets have a header portion that contains information about the packet including the source and destination, timestamp, etc. The main portion of a packet that contains the actual data is called the body or the payload.
Protocol A protocol is a set of rules and standards that defines a language that devices can use to communicate. These are the rules or standards that define the syntax, seman- tics and synchronization of communication and possible error recovery methods. There are a great number of protocols in use extensively in networking, and they are often implemented in different layers. Some low level protocols are TCP, [32] UDP, [166] IP, [59, 167] and ICMP. [168] Application layer protocols can be built on top of these lower layer protocols, such as HTTP, [37, 66] SSH, [206] and FTP. [169] Protocols may be implemented by hardware, software, or a combination of both.
Connection In networking, a connection, or sometimes called a session, is a semi- permanent interactive information interchange between two or more communicating devices. A connection is built before the data transfer and then is deconstructed at the at the end of the data transfer.