Skip to content

Commit

Permalink
Reorder projects
Browse files Browse the repository at this point in the history
Signed-off-by: Bili Dong <[email protected]>
  • Loading branch information
qobilidop committed Feb 8, 2025
1 parent 276603e commit fc96153
Showing 1 changed file with 55 additions and 77 deletions.
132 changes: 55 additions & 77 deletions 2025/ideas_list.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,67 +32,54 @@ Please check our [Contributor Guidance](contributor_guidance.md) for detailed in
### Index

- Category: core P4 tooling
- [Project 1: Finalize Katran P4 and improve the eBPF backend!](#project-1)
- [Project 1: Integrate p4-constraints frontend into p4c](#project-9)
- [Project 2: BMv2 packet trace support](#project-2)
- [Project 9: Integrate p4-constraints frontend into p4c](#project-9)
- [Project 3: Finalize Katran P4 and improve the eBPF backend!](#project-1)
- Category: exploratory P4 tooling
- [Project 3: P4MLIR: MLIR-based high-level IR for P4 compilers](#project-3)
- [Project 4: P4MLIR BMv2 Dialect Prototype](#project-4)
- Category: P4 application
- [Project 5:](#project-5)
- [Project 6:](#project-6)
- [Project 4: P4MLIR: MLIR-based high-level IR for P4 compilers](#project-3)
- [Project 5: P4MLIR BMv2 Dialect Prototype](#project-4)
- Category: P4 research
- [Project 7:](#project-7)
- [Project 8: Scaling Decision Tree Algorithm in P4](#project-8)
- [Project 6: Scaling Decision Tree Algorithm in P4](#project-8)

---

### <a id='project-1'></a> Project 1: Finalize Katran P4 and improve the eBPF backend!
### <a id='project-1'></a> Project 1: Integrate p4-constraints frontend into p4c

- [Back to index](#index)

**Basic info**

- Potential mentors
- Primary: Davide Scano
- Support: To be defined
- Primary: TBD
- Support: TBD
- Skills
- Required: [eBPF](https://ebpf.io/)
- Preferred: [P4C](https://github.com/p4lang/p4c), P4
- Project difficulty: Medium
- Project size: 175 hour / 350 hour
- Required: Git, C++
- Preferred: CMake, Bazel, [P4C](https://github.com/p4lang/p4c)
- Project difficulty: Easy
- Project size: 175 hour
- Discussion thread: TBD

**Alternative qualification task**

If you want to apply to this project, please complete the following qualification task, instead of the general one:
**Project description**

- The knowledge of XDP eBPF is required for this project. We expect you to demonstrate your XDP eBPF skills in one of the following ways:
- A PR to an existing XDP eBPF project.
- A personal project that has used XDP eBPF.
- Basic knowledge of P4 programming language. You can showcase your P4 knowledge through one of the following:
- A pull request to an existing P4 project, preferably a P4 tutorials or p4c.
- A personal project that incorporates P4.
- In your application, please include a link to your XDP eBPF and P4-related PRs or projects.
[p4-constraints](https://github.com/p4lang/p4-constraints) is a useful extension of the P4 programming language that is currently architected as a standalone library separate from the P4 compiler, p4c.

**Project description**
<img width="757" alt="image" src="assets/p4_constraints.png">

[Katran](https://github.com/facebookincubator/katran) is designed to build a high-performance load balancer based on C and eBPF. The P4 open-source compiler, [P4C](https://github.com/p4lang/p4c), supports eBPF as one of its possible targets. This allows a P4 program to be converted into an eBPF program for packet processing. The maintenance of the eBPF backend relies on simple examples that are used to test the backend. The lack of complex programs makes developing and evaluating new features, as well as identifying regressions, more challenging.
The goal of this project is to integrate the p4-constraints frontend, which parses and type checks the constraint annotations, into the p4c frontend. This architecture change provides the following benefits:
- **For P4 programmers**: Immediate feedback about syntax or type errors in constraints during P4 compilation.
- **For p4c backend developers**: Easy consumption of the parsed & type-checked constraints.

Finalize the implementation of Katran in P4 helps provide a complex program example imporve the test coverage of eBPF backend. Due to that possible bugs can be identifed and fixd together with new features can be implemented.
[P4TestGen](https://www.cs.cornell.edu/~jnfoster/papers/p4testgen.pdf) is a concrete example of a p4c backend that needs to consume p4-constraints to work correctly, and it currently does this by implementing its own p4-constraints frontend, which is brittle and requires duplication of work for new p4-constraint features.

**Expected outcomes**

- Document and complete the P4 implementation of Katran.
- Identify and/or resolve bugs in the P4C eBPF backend.
- If needed, update the P4C eBPF backend documentation.
- The p4-constraints frontend becomes part of p4c.

**Resources**

- Katran: https://github.com/facebookincubator/katran
- Katran P4: https://github.com/Dscano//P4-Katran
- P4C eBPF backend: https://github.com/p4lang/p4c/tree/main/backends/ebpf
- NIKSS: https://github.com/NIKSS-vSwitch/nikss
- https://github.com/p4lang/p4-constraints
- https://github.com/p4lang/p4c
- https://github.com/p4lang/p4c/pull/4387

---

Expand Down Expand Up @@ -130,49 +117,56 @@ The goal of this project is to provide a mechanism for BMv2 to record the trace

---

---
### <a id='project-9'></a> Project 9: Integrate p4-constraints frontend into p4c
### <a id='project-3'></a> Project 3: Finalize Katran P4 and improve the eBPF backend!

- [Back to index](#index)

**Basic info**

- Potential mentors
- Primary: TBD
- Support: TBD
- Primary: Davide Scano
- Support: To be defined
- Skills
- Required: Git, C++
- Preferred: CMake, Bazel, [P4C](https://github.com/p4lang/p4c)
- Project difficulty: Easy
- Project size: 175 hour
- Required: [eBPF](https://ebpf.io/)
- Preferred: [P4C](https://github.com/p4lang/p4c), P4
- Project difficulty: Medium
- Project size: 175 hour / 350 hour
- Discussion thread: TBD

**Project description**
**Alternative qualification task**

[p4-constraints](https://github.com/p4lang/p4-constraints) is a useful extension of the P4 programming language that is currently architected as a standalone library separate from the P4 compiler, p4c.
If you want to apply to this project, please complete the following qualification task, instead of the general one:

<img width="757" alt="image" src="assets/p4_constraints.png">
- The knowledge of XDP eBPF is required for this project. We expect you to demonstrate your XDP eBPF skills in one of the following ways:
- A PR to an existing XDP eBPF project.
- A personal project that has used XDP eBPF.
- Basic knowledge of P4 programming language. You can showcase your P4 knowledge through one of the following:
- A pull request to an existing P4 project, preferably a P4 tutorials or p4c.
- A personal project that incorporates P4.
- In your application, please include a link to your XDP eBPF and P4-related PRs or projects.

The goal of this project is to integrate the p4-constraints frontend, which parses and type checks the constraint annotations, into the p4c frontend. This architecture change provides the following benefits:
- **For P4 programmers**: Immediate feedback about syntax or type errors in constraints during P4 compilation.
- **For p4c backend developers**: Easy consumption of the parsed & type-checked constraints.
**Project description**

[P4TestGen](https://www.cs.cornell.edu/~jnfoster/papers/p4testgen.pdf) is a concrete example of a p4c backend that needs to consume p4-constraints to work correctly, and it currently does this by implementing its own p4-constraints frontend, which is brittle and requires duplication of work for new p4-constraint features.
[Katran](https://github.com/facebookincubator/katran) is designed to build a high-performance load balancer based on C and eBPF. The P4 open-source compiler, [P4C](https://github.com/p4lang/p4c), supports eBPF as one of its possible targets. This allows a P4 program to be converted into an eBPF program for packet processing. The maintenance of the eBPF backend relies on simple examples that are used to test the backend. The lack of complex programs makes developing and evaluating new features, as well as identifying regressions, more challenging.

Finalize the implementation of Katran in P4 helps provide a complex program example imporve the test coverage of eBPF backend. Due to that possible bugs can be identifed and fixd together with new features can be implemented.

**Expected outcomes**

- The p4-constraints frontend becomes part of p4c.
- Document and complete the P4 implementation of Katran.
- Identify and/or resolve bugs in the P4C eBPF backend.
- If needed, update the P4C eBPF backend documentation.

**Resources**

- https://github.com/p4lang/p4-constraints
- https://github.com/p4lang/p4c
- https://github.com/p4lang/p4c/pull/4387
- Katran: https://github.com/facebookincubator/katran
- Katran P4: https://github.com/Dscano//P4-Katran
- P4C eBPF backend: https://github.com/p4lang/p4c/tree/main/backends/ebpf
- NIKSS: https://github.com/NIKSS-vSwitch/nikss

---


### <a id='project-3'></a> Project 3: P4MLIR: MLIR-based high-level IR for P4 compilers
### <a id='project-4'></a> Project 4: P4MLIR: MLIR-based high-level IR for P4 compilers

- [Back to index](#index)

Expand Down Expand Up @@ -231,7 +225,7 @@ The exact list of tasks is to be determined with mentors.

---

### <a id='project-4'></a> Project 4: P4MLIR BMv2 Dialect Prototype
### <a id='project-5'></a> Project 5: P4MLIR BMv2 Dialect Prototype

- [Back to index](#index)

Expand Down Expand Up @@ -275,25 +269,7 @@ In the longer term, we expect a compilation path like P4C frontend -> P4HIR dial

---

### <a id='project-5'></a> Project 5:

- [Back to index](#index)

---

### <a id='project-6'></a> Project 6:

- [Back to index](#index)

---

### <a id='project-7'></a> Project 7:

- [Back to index](#index)

---

### <a id='project-8'></a> Project 8: Scaling Decision Tree Algorithm in P4
### <a id='project-6'></a> Project 6: Scaling Decision Tree Algorithm in P4

- [Back to index](#index)

Expand Down Expand Up @@ -321,3 +297,5 @@ Scaling the Decision Tree Algorithm in P4
**Resources**

- Decision Tree Algorithm: https://en.wikipedia.org/wiki/Decision_tree_learning

---

0 comments on commit fc96153

Please sign in to comment.