This week marks a sort of transition toward some more hands-on work with programmable routers. We’re not quite ready to program the physical hardware router, but exercises my research group has worked on this week had given us some concrete experience with the P4 programming language. My group had been independently working through a series of exercises designed to guide us through the structure and functionality of the P4 language. The key exercise of this week that I worked through involved implementing layer-2 (link-layer) forwarding behavior on a software switch. This allows for forwarding out different ports based on MAC address on a local network. I’ve published my solution to this exercise on my git server. This exercise isn’t quite at the level of IP forwarding, but I also spent time this week inspecting two IP-forwarding implementations in P4 line-by-line so I feel I have a reasonably strong grasp of the concepts.

I feel that this week’s hands-on experience with P4 has really given me an appreciation for the power, control, and abstraction that the language offers over the network devices it controls. Of course, to really become proficient in P4, the main thing I need is practice. Over the course of the next week, I hope to implement basic IP forwarding in P4 on my own to prepare myself for working with the physical hardware, ideally the following week. I may either end up continuing through the previously mentioned exercise set or working instead on the official P4 tutorial IP forwarding exercise. I also hope to spend some time next week doing some initial planning for the DIMACS research report and potentially reaching out to Tavis to discuss our plans for how the report and presentation might be structured.