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:
-
-
-
+
+
+
@@ -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.
-
-
-
+
+
+
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:
-
-
-
+
+
+
@@ -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:
-
-
-
+
+
+
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:
-
-
-
+
+
+
### 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.
-
-
-
+
+
+
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:
-
+
@@ -80,7 +80,7 @@ Resultant Binary: `p4c-bm2-pna`
- To start the `pna_nic` target:
-
+
- 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`
-
+
- Send the Packets from one interface and listen on another interface. Example:
-
+
-
+
## 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.