General Information
| Course Code | XB_0048 |
|---|---|
| Credits | 6 EC |
| Period | P1 |
| Course Level | 300 |
| Language of Tuition | English |
| Faculty | Faculty of Science |
| Course Coordinator | dr. D. Bonetta |
| Examiner | dr. D. Bonetta |
| Teaching Staff |
mr. S. Ud Din B. Chandrasekaran dr. D. Bonetta ir. J.J.R. Donkervliet MSc |
|
Part of programme(s)
Premaster
Use the arrow keys to navigate the list, Enter to select, and Escape to close.
|
|
Practical Information
You need to register for this course yourself. The (de)registration deadlines can be found on VU.nl
| Teaching Methods | Seminar, Practical, Lecture |
|---|
Course Objective
The objective of this course is to teach students about advanced and practical concepts in networking technologies. Upon completion of this course, students will be able to:
- Understand end-host networking concepts [Knowledge and understanding]
- Learn about Linux networking concepts and tools (tcpdump, ethtool, arping, ping, numactl) [Knowledge and understanding] [Applying knowledge and understanding]
- Explain network stack design and implementation challenges associated with multi-core systems and high-speed networks (100+ Gbps) [Knowledge and understanding] [Applying knowledge and understanding]
- Analyze various network stack designs (kernel, userspace, application-specific) and APIs (e.g., sockets, RDMA and friends) on their trade-offs, performance gains, and implementation efforts [Applying knowledge and understanding] [Making judgements]
- Understand how to manage modern networks and how popular applications (e.g., video streaming) are built and run on the Internet [Knowledge and understanding] [Making judgements]
- Learn about ongoing and emerging research challenges in networking technologies [Knowledge and understanding] [Lifelong learning skills]
- Apply the knowledge gained into building a practical implementation of TCP/IP protocol stack, and explain networking concepts [Applying knowledge and understanding] [Lifelong learning skills] [Communication]
Course Content
The course covers recent advancements in networking technologies in general-purpose computing (e.g., data center, cloud computing). The course is split into two themes: End-host networking and network infrastructure.
In the end-host networking theme, students will learn about networking concepts (MTU, Segmentation, stateful and stateless Offloading, RSS, SGE, multiqueue), internals of the Linux networking stack, tools (tcpdump, ethtool, arping, ping, numactl), challenges associated with delivering high-performance network I/O operations (100+ Gbps bandwidth, millions of network operations/sec, many/multi-core scalability), alternate ways of building networking stacks in the userspace, design of packet processing stacks, and introduction to the high-performance Remote Direct Memory Access (RDMA) technology.
The second theme of the course will be focused on the recent development in network infrastructure and its management. Students will learn the details about the protocols running on our Internet and how the Internet is managed with new approaches like software-defined networking, and how to utilize these new technologies to build popular Internet applications/services.
Additional Information Teaching Methods
2x Lectures per week, Practical coding group project (with 2 or 3 students) with 1 lab session per week for QA (deliverables: code and report)
Method of Assessment
Exam (50%, 50 points), Practical Assignments (50%, 50 points over 5 assignments) -- resits only available for the exam. Both exam and practical assignment needs to be passed separately. Their cut off is 25 points for both. A total of (25 + 25 =) 50 / 100 points will give you a grade of 6.0/10.
Students are graded on both the completion of the assignment as well as their understanding of the material (based on the oral discussion/interview and report/code submitted).
Literature
Slides (provided in the class), project handbook, and further online reading material/links.
Additional Information Target Audience
Minor Deep ProgrammingRecommended background knowledge
IMPORTANT: There is no support to do the project work in any other language than C/C++ (not python supported). We get asked this every year.
Operating systems (userspace, kernel, processes, memory management), System Architecture (I/O devices, interrupts, CPU caches), Computer Networks (TCP/IP, Ethernet, Packet switching networks, ARP, ICMP protocols), good knowledge of C/C++ programming (important) with sockets, Linux build and coding environment (bash, CMake, gdb, gcc, make and friends). Courses that cover this background systems knowledge include X_400487 Computer Networks, X_405067 Operating Systems, XB_40009 Computer Organization. It is strongly recommended that you must finish these courses before you take this course.
In case you lack these skills and/or knowledge, we can provide additional reading material and lab sessions, however, you need to study them by yourself outside the class hours. Keep in mind this is not a course to learn how to program in C/C++ or learn about networking concepts like how to program sockets or what is TCP/IP or ARP. This is an advanced course that focuses on low-level details of designing and programming a working networking stack.