1 A Modern Course on Broadband Networking
These are the course notes from a course on broadband networking I have taught in the past and I am currently teaching for the Fall semester 2016. Although this is a graduate course, the material is suitable as a second course in networking that focuses on wired networks rather than wireless networks. Any area with math that looks scary is backed up with simulations that illustrate the key concepts, so you can skip the math if desired. The simulations are implemented in Python and the code is linked to the pages where it is discussed.
These notes have only been reviewed by myself and the students that have and are currently taking the course. If you come across errors or have questions send me an email and I'll update the notes, add more material, send you a response, etc...
The course consisted of segments that lastest from one week (two lectures) to three weeks (six lectures). The segments of the course are outlined below:
An introduction and overview of broadband networks with a view to getting students thinking about unifying concepts rather than just an over flowing alphabet soup bowl of accronyms. Key concepts discussed include: multiplexing, inverse multiplexing, data and control planes, network layering and partitioning, review of Ethernet switching (bridging).
Tunneling and virtual private networks. Here we start with the real world problem of building networks out of available technology and services and see how this leads to tunneling protocols, VPNs, and VLANs. Along the way we'll introduce the notion of adaptation in network layering and come up with a working definition of tunneling. We look at the properties of several tunneling approaches including IP-in-IP, GRE, and L2TP. This section finishes with a discussion of VPNs and a look at Ethernet VLANs.
Multi-protocol label switching (MPLS) is taught not just from the point of view of an important vehicle for VPNs but also as a representative connection oriented packet switching technology. Such technologies which include X.25, Frame Relay, and ATM, as well as MPLS, are significantly different conceptually from IP and Ethernet. We explain these notions, look at scaling issues that any connection oriented packet switching technology will face. We look at some of the some methods that MPLS has to address scaling issues such as LSP merging and LSP tunnels. Finally we review MPLS control plane technologies. Don't skip this section since many of the concepts are applicable to traffic engineering with SDNs.
Optical Networks and GMPLS. Currently no lectures notes are available for this section. See other sections of Grotto Networking's web site for information on GMPLS and wavelength switched optical networks (WSON), or read our book.
Data Center Networking and Network Virtualization. To understand data center networking we need to understand a bit about data center networking. In this section we give an overview of cloud computing, look at two fundamentally different types of cloud applications: big data and modern web applications. We then look at the network services that such application require and the challenges that these pose for networking in the data center. We finish with a discussion of one networking approach to meeting these challenges the NV03 (network virtualization over layer 3) architecture and the VXLAN tunneling protocol.
Software Defined Networks (SDNs). In this section the basic ideas of SDNs are presented, then we dive into the OpenFlow protocol enough to understand the raw capabilities of such an interface. We then go through a number of example SDN programming applications from the trivial, making the equivalent of an Ethernet hub, to the extremely sophisticated such as shortest path Ethernet forwarding and path based traffic engineering without MPLS. Along the way we'll compare that various constraints that various control planes place on network usage. Also addressed are SDN controllers, SDN emulation via Mininet, and SDN based network virtualization.
Queueing Theory and Discrete Event Simulation applied to Networking In this section we start with a discussion of IP performance measures which then leads us to a quick review of probability which we do in a very hands on way via the use of the vast collection of random variable distributions availabe in Python and related libraries. In particular we show how to simulated packet networking phenomena via a relatively small set of Python classes. A reasonable set of analytic queueing results are derived and verified (by the students) via the simulation classes we have defined. Finally we go over key results that permit the analysis of networks of queues and their value in verifying simulation models and programs.
Switching Architectures. I know what you're thinking: "I'm never going to build a switch, so why bother learning about switching architectures". Beware switch salesman and hype! In this section we design (in jest) the highest throughput switch yet invented and then look at the problems with such a design. We then learn about switch cost factors and a key method, multi-stage switch architectures, for reduce costs. We study in detail the Clos multi-stage architecture, not only since it is frequently used in switches but also due to its use in very high performance data center networks. We finish by looking at the implementations of shared memory switch fabrics and packet processing with the help of TCAMs and hardware hash tables.
Quality of Service in Networks: Mechanisms, Techniques, and Models. In this section we are concerned with the quality of service a packet stream receives as it crosses a network. The key performance measures we are interested in are delay and throughput. We learn about traffic characterization in terms of average rate, peak rate, and maximum burst size and how such traffic bounds can allow us to place bounds on delay and prevent packet loss. From this we learn of the importance of traffic shapers and policers. We investigate the role of packet queueing discplines at a switch output port in achieving fairness, throughput guarantees and better delay bounds. Finally we review the two main models of QoS in IP networks. All the concepts in this section are illustrated via Python simulations that the student can run, along with references to where these techniques can be found in practice (almost all are available via various Linux networking modues).