diff --git a/2024/projects/bmv2_pna/assets/GsoC_final_presentation-bmv2_pna.pdf b/2024/assets/final_presentation/bmv2-pna.pdf similarity index 100% rename from 2024/projects/bmv2_pna/assets/GsoC_final_presentation-bmv2_pna.pdf rename to 2024/assets/final_presentation/bmv2-pna.pdf diff --git a/2024/projects/container_migration/final_presentation_slides.pdf b/2024/assets/final_presentation/container-migration.pdf similarity index 100% rename from 2024/projects/container_migration/final_presentation_slides.pdf rename to 2024/assets/final_presentation/container-migration.pdf diff --git a/2024/projects/formatter/P4Formatter_GSoC_Final.pdf b/2024/assets/final_presentation/formatter.pdf similarity index 100% rename from 2024/projects/formatter/P4Formatter_GSoC_Final.pdf rename to 2024/assets/final_presentation/formatter.pdf diff --git a/2024/projects/bmv2_pna/assets/pna-block-diagram.png b/blog/_assets/2024-bmv2-pna/pna-block-diagram.png similarity index 100% rename from 2024/projects/bmv2_pna/assets/pna-block-diagram.png rename to blog/_assets/2024-bmv2-pna/pna-block-diagram.png diff --git a/2024/projects/bmv2_pna/assets/pna_nic.gif b/blog/_assets/2024-bmv2-pna/pna_nic.gif similarity index 100% rename from 2024/projects/bmv2_pna/assets/pna_nic.gif rename to blog/_assets/2024-bmv2-pna/pna_nic.gif diff --git a/2024/projects/bmv2_pna/assets/pna_nic_CLI.png b/blog/_assets/2024-bmv2-pna/pna_nic_CLI.png similarity index 100% rename from 2024/projects/bmv2_pna/assets/pna_nic_CLI.png rename to blog/_assets/2024-bmv2-pna/pna_nic_CLI.png diff --git a/2024/projects/bmv2_pna/assets/scapy-send-packet.png b/blog/_assets/2024-bmv2-pna/scapy-send-packet.png similarity index 100% rename from 2024/projects/bmv2_pna/assets/scapy-send-packet.png rename to blog/_assets/2024-bmv2-pna/scapy-send-packet.png diff --git a/2024/projects/bmv2_pna/assets/tcpdump_veth3.png b/blog/_assets/2024-bmv2-pna/tcpdump_veth3.png similarity index 100% rename from 2024/projects/bmv2_pna/assets/tcpdump_veth3.png rename to blog/_assets/2024-bmv2-pna/tcpdump_veth3.png diff --git a/2024/projects/container_migration/assets/container_interface_dark.png b/blog/_assets/2024-container-migration/container_interface_dark.png similarity index 100% rename from 2024/projects/container_migration/assets/container_interface_dark.png rename to blog/_assets/2024-container-migration/container_interface_dark.png diff --git a/2024/projects/container_migration/assets/container_interface_light.png b/blog/_assets/2024-container-migration/container_interface_light.png similarity index 100% rename from 2024/projects/container_migration/assets/container_interface_light.png rename to blog/_assets/2024-container-migration/container_interface_light.png diff --git a/2024/projects/container_migration/assets/container_network_dark.png b/blog/_assets/2024-container-migration/container_network_dark.png similarity index 100% rename from 2024/projects/container_migration/assets/container_network_dark.png rename to blog/_assets/2024-container-migration/container_network_dark.png diff --git a/2024/projects/container_migration/assets/container_network_light.png b/blog/_assets/2024-container-migration/container_network_light.png similarity index 100% rename from 2024/projects/container_migration/assets/container_network_light.png rename to blog/_assets/2024-container-migration/container_network_light.png diff --git a/2024/projects/container_migration/assets/controller_dark.png b/blog/_assets/2024-container-migration/controller_dark.png similarity index 100% rename from 2024/projects/container_migration/assets/controller_dark.png rename to blog/_assets/2024-container-migration/controller_dark.png diff --git a/2024/projects/container_migration/assets/controller_light.png b/blog/_assets/2024-container-migration/controller_light.png similarity index 100% rename from 2024/projects/container_migration/assets/controller_light.png rename to blog/_assets/2024-container-migration/controller_light.png diff --git a/2024/projects/container_migration/assets/linux_network_dark.png b/blog/_assets/2024-container-migration/linux_network_dark.png similarity index 100% rename from 2024/projects/container_migration/assets/linux_network_dark.png rename to blog/_assets/2024-container-migration/linux_network_dark.png diff --git a/2024/projects/container_migration/assets/linux_network_light.png b/blog/_assets/2024-container-migration/linux_network_light.png similarity index 100% rename from 2024/projects/container_migration/assets/linux_network_light.png rename to blog/_assets/2024-container-migration/linux_network_light.png diff --git a/2024/projects/container_migration/assets/redis_dark.png b/blog/_assets/2024-container-migration/redis_dark.png similarity index 100% rename from 2024/projects/container_migration/assets/redis_dark.png rename to blog/_assets/2024-container-migration/redis_dark.png diff --git a/2024/projects/container_migration/assets/redis_light.png b/blog/_assets/2024-container-migration/redis_light.png similarity index 100% rename from 2024/projects/container_migration/assets/redis_light.png rename to blog/_assets/2024-container-migration/redis_light.png diff --git a/2024/projects/container_migration/assets/simple_lb_dark.png b/blog/_assets/2024-container-migration/simple_lb_dark.png similarity index 100% rename from 2024/projects/container_migration/assets/simple_lb_dark.png rename to blog/_assets/2024-container-migration/simple_lb_dark.png diff --git a/2024/projects/container_migration/assets/simple_lb_light.png b/blog/_assets/2024-container-migration/simple_lb_light.png similarity index 100% rename from 2024/projects/container_migration/assets/simple_lb_light.png rename to blog/_assets/2024-container-migration/simple_lb_light.png diff --git a/2024/projects/container_migration/README.md b/blog/_posts/2024-08-25-container-migration.md similarity index 92% rename from 2024/projects/container_migration/README.md rename to blog/_posts/2024-08-25-container-migration.md index e63780a152..bedb772eb9 100644 --- a/2024/projects/container_migration/README.md +++ b/blog/_posts/2024-08-25-container-migration.md @@ -69,9 +69,9 @@ Our initial prototype was inspired by the load_balance exercise available in the The following diagram shows the initial network topology, with three hosts (`h1`, `h2`, `h3`) and three switches (`s1`, `s2`, `s3`), where `s1` is the load balancer: - - - Shows a graph of nodes and switches to demostrate a simple load balancing solution. + + + Shows a graph of nodes and switches to demostrate a simple load balancing solution. @@ -87,9 +87,9 @@ Next, we want to be able to change the hosts during runtime. We built a Python-b The controller also keeps track of the match-action table state, by a target IP -> index mapping. The index mapping corresponds to the value in the `ecmp_nhop` table. This makes it more efficient to look up the index of a specific IP in the table, without the need to fetch table state from the switch on each update request. - - - Shows a flow chart of interaction between the user script, controller and BMv2 switch. + + + Shows a flow chart of interaction between the user script, controller and BMv2 switch. During this stage, we faced minor issues: @@ -131,9 +131,9 @@ Using netns, veth pairs, and the iproute2 suite to set MAC and IP addresses of v The following diagram shows the created topology, including the virtual interfaces: - - - Shows a graph with hosts and switches in the system, wired up via veth pairs. + + + Shows a graph with hosts and switches in the system, wired up via veth pairs. @@ -152,9 +152,9 @@ Specifically, Podman uses the netavark backend for virtual networking. Each netw The following diagram shows the network topology of a single host and the connection of the network to a switch port: - - - Shows how a container (h1) is connected to its network (h1-net) via a veth pair, and how that network is connected to the switch s1 via the network bridge h1-br. + + + Shows how a container (h1) is connected to its network (h1-net) via a veth pair, and how that network is connected to the switch s1 via the network bridge h1-br. We wrote a script to create a network and a pod for each container. A pod is a group of containers with a shared IP address. This is also the case within the Kubernetes network model. We built a container image using the TCP server executable from the previous steps. Analogously, we built a client image. @@ -180,9 +180,9 @@ For simplicity, the switch container runs on the host network. The container ima The following diagram shows the network topology, which consists of 4 Podman networks interfaced by bridges, connected to a single BMv2 switch running in a container, but on the host network: - - - Shows how hosts h1-h4 are connected to their respective networks and how the container networks are connected to the switch s1. + + + Shows how hosts h1-h4 are connected to their respective networks and how the container networks are connected to the switch s1. ### Redis container migration @@ -195,9 +195,9 @@ A client, also running on `h1`, that periodically fetches data from the BE and p A producer, also running on `h1`, periodically fetches a numerical ‘counter’ entry from the Redis DB, increments it by one, and updates the entry in the database. - - - Shows the architecture of the Redis migration example, with BE, FE and producer running on h1, and Redis DB on h2, and an arrow showcasing how Redis DB should be migrated to h3. + + + Shows the architecture of the Redis migration example, with BE, FE and producer running on h1, and Redis DB on h2, and an arrow showcasing how Redis DB should be migrated to h3. After deploying this system, we can observe the counter being periodically incremented by the producer. We perform a migration of the Redis DB from host 2 to host 3, the same way as in the previous examples, and observe little to no downtime from the client’s perspective. diff --git a/2024/projects/documentation/README.md b/blog/_posts/2024-08-26-documentation.md similarity index 100% rename from 2024/projects/documentation/README.md rename to blog/_posts/2024-08-26-documentation.md diff --git a/2024/projects/bmv2_pna/README.md b/blog/_posts/2024-08-31-bmv2-pna.md similarity index 91% rename from 2024/projects/bmv2_pna/README.md rename to blog/_posts/2024-08-31-bmv2-pna.md index 9cb39a1955..3e636b364c 100644 --- a/2024/projects/bmv2_pna/README.md +++ b/blog/_posts/2024-08-31-bmv2-pna.md @@ -27,7 +27,7 @@ As the P4 use cases on the NIC side increase, so does the need for a P4 simulator that supports [Portable NIC Architecture (PNA)](https://p4.org/p4-spec/docs/PNA-v0.7.html). Currently, the BMv2 simulator only supports the v1model and [Portable Switch Architecture (PSA)](https://p4.org/p4-spec/docs/PSA-v1.2.html) specifications. This project aims to integrate a minimal core subset of the PNA into the BMv2 and the P4C. The PNA Architecture Block Diagram is shown in below:

- PNA Block Diagram + PNA Block Diagram

@@ -80,7 +80,7 @@ Resultant Binary: `p4c-bm2-pna` - To start the `pna_nic` target:

- pna_nic target demo + pna_nic target demo

- start the `pna_nic_CLI` and populate the `L2_fwd` table mentioned in the P4 program using the below example (or your own) data: @@ -89,17 +89,17 @@ Resultant Binary: `p4c-bm2-pna` - `table_add L2_fwd L2_send_to_port 52:04:da:9b:15:59 => 2`

- PNA NIC CLI + PNA NIC CLI

- Send the Packets from one interface and listen on another interface. Example:

- Sending packet from one veth0 + Sending packet from one veth0

- Listening on veth3 + Listening on veth3

## Future Work diff --git a/2024/projects/formatter/README.md b/blog/_posts/2024-09-09-formatter.md similarity index 100% rename from 2024/projects/formatter/README.md rename to blog/_posts/2024-09-09-formatter.md diff --git a/2024/projects/bmv2_pna/wiki.md b/permapage/2024-bmv2-pna.md similarity index 62% rename from 2024/projects/bmv2_pna/wiki.md rename to permapage/2024-bmv2-pna.md index 862dccb0f4..5f9fdb6b68 100644 --- a/2024/projects/bmv2_pna/wiki.md +++ b/permapage/2024-bmv2-pna.md @@ -1,7 +1,8 @@ -# BMv2 PNA +# P4 GSoC 2024 Project: BMv2 PNA -## Link to report -- [BMv2 PNA Report](/2024/projects/bmv2_pna/README.md) +## Major links +- [Blog post (final report)](/blog/_posts/2024-08-31-bmv2-pna.md) +- Final presentation (Slides, Recording) ## New PNA NIC target in BMv2 Relevant PRs: @@ -12,4 +13,4 @@ Relevant PRs: ## P4C backend for the new BMv2 PNA NIC target Relevant PR: -- https://github.com/p4lang/p4c/pull/4729 \ No newline at end of file +- https://github.com/p4lang/p4c/pull/4729 diff --git a/2024/projects/container_migration/wiki.md b/permapage/2024-container-migration.md similarity index 80% rename from 2024/projects/container_migration/wiki.md rename to permapage/2024-container-migration.md index 5bef0b4bd0..815fe4e11d 100644 --- a/2024/projects/container_migration/wiki.md +++ b/permapage/2024-container-migration.md @@ -1,7 +1,8 @@ -# P4-Enabled Container Migration in Kubernetes +# P4 GSoC 2024 Project: P4-Enabled Container Migration in Kubernetes -## Link to report -- [Container Migration Report](/2024/projects/container_migration/README.md) +## Major links +- [Blog post (final report)](/blog/_posts/2024-08-25-container-migration.md) +- Final presentation (Slides, Recording) ## Controller Relevant PRs: diff --git a/2024/projects/documentation/wiki.md b/permapage/2024-documentation.md similarity index 74% rename from 2024/projects/documentation/wiki.md rename to permapage/2024-documentation.md index 47f398a804..9f4309df7c 100644 --- a/2024/projects/documentation/wiki.md +++ b/permapage/2024-documentation.md @@ -1,7 +1,8 @@ -# P4 Compiler Documentation +# P4 GSoC 2024 Project: P4 Compiler Documentation -## Link to report -- [ Compiler Documentation Report](/2024/projects/documentation/README.md) +## Major links +- [Blog post (final report)](/blog/_posts/2024-08-26-documentation.md) +- Final presentation (Slides, Recording) ## Workflow Automation Relevant PRs: @@ -18,5 +19,3 @@ Relevant PR: - https://github.com/p4lang/p4c/pull/4708 - https://github.com/p4lang/p4c/pull/4788 - https://github.com/p4lang/p4c/pull/4849 - - diff --git a/2024/projects/formatter/wiki.md b/permapage/2024-formatter.md similarity index 67% rename from 2024/projects/formatter/wiki.md rename to permapage/2024-formatter.md index 5400c46320..dffa83de37 100644 --- a/2024/projects/formatter/wiki.md +++ b/permapage/2024-formatter.md @@ -1,7 +1,8 @@ -# P4 Formatter +# P4 GSoC 2024 Project: P4 Formatter -## Link to report -- [ P4 Formatter Report](/2024/projects/formatter/README.md) +## Major links +- [Blog post (final report)](/blog/_posts/2024-09-09-formatter.md) +- Final presentation (Slides, Recording) ## New p4fmt backend Relevant PRs: @@ -18,4 +19,4 @@ Relevant PR: ## Reference checker for p4fmt Relevant PR: -- https://github.com/p4lang/p4c/pull/4778 \ No newline at end of file +- https://github.com/p4lang/p4c/pull/4778 diff --git a/permapage/README.md b/permapage/README.md new file mode 100644 index 0000000000..4959713cfb --- /dev/null +++ b/permapage/README.md @@ -0,0 +1,5 @@ +# P4 GSoC Project Permapages + +This directory hosts permapages (permenant pages) for all completed P4 GSoC projects. + +TODO: Explain more: the rationale, the file naming scheme, etc.