-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Refine 2025 ideas list for org application
Signed-off-by: Bili Dong <[email protected]>
- Loading branch information
Showing
1 changed file
with
70 additions
and
58 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,18 +6,27 @@ Please check our [Contributor Guidance](contributor_guidance.md) for detailed in | |
|
||
## Potential mentors | ||
|
||
1. Annus Zulfiqar ([@annuszulfiqar2021](https://github.com/annuszulfiqar2021), [email protected]) | ||
1. Anton Korobeynikov ([@asl](https://github.com/asl), [email protected]) | ||
1. Bili Dong ([@qobilidop](https://github.com/qobilidop), [email protected]) | ||
1. Davide Scano ([@Dscano](https://github.com/Dscano), [email protected]) | ||
⭐ = available as primary mentor | ||
|
||
1. ⭐ Annus Zulfiqar ([@annuszulfiqar2021](https://github.com/annuszulfiqar2021), [email protected]) | ||
1. ⭐ Anton Korobeynikov ([@asl](https://github.com/asl), [email protected]) | ||
1. ⭐ Bili Dong ([@qobilidop](https://github.com/qobilidop), [email protected]) | ||
1. ⭐ Davide Scano ([@Dscano](https://github.com/Dscano), [email protected]) | ||
1. Fabian Ruffy ([@fruffy](https://github.com/fruffy), [email protected]) | ||
1. Walter Willinger ([](), [email protected]) | ||
1. Jonathan DiLorenzo ([@jonathan-dilorenzo](https://github.com/jonathan-dilorenzo), [email protected]) | ||
1. Walter Willinger ([email protected]) | ||
|
||
## FAQ | ||
|
||
Notes: you = contributors, we = mentors. | ||
|
||
**Some mentors are listed as primary mentor for multiple projects. How does that work?** | ||
|
||
In this ideas list, we want to give more options for you to choose from. Depending on the applications received, eventually they will decide on at most 1 project to commit to as a primary mentor. | ||
|
||
**What do our project difficulties mean?** | ||
|
||
- Easy: Basic coding skills shall suffice. | ||
- Easy: Basic coding skills are sufficient. | ||
- Medium: CS undergraduate level knowledge/skills are required. | ||
- Hard: Deeper and more specialized knowledge/skills are required. | ||
|
||
|
@@ -27,72 +36,80 @@ Please check our [Contributor Guidance](contributor_guidance.md) for detailed in | |
- 175 hour: 12 weeks | ||
- 350 hour: 12 weeks | ||
|
||
**Some projects have an "alternative qualification task" section. What does that mean?** | ||
|
||
It means for that specific project, instead of the general qualification task, you shall complete the alternative qualification task described in that section. | ||
|
||
**Some "alternative qualification task" section says "demonstrate your XYZ skills through contributions to". What does that mean?** | ||
|
||
It means we expect you to have made relevant contributions in order to demonstrate your XYZ skills. In your applicaiton, please briefly describe your contributions, and attach related links (e.g. pull requests on GitHub). | ||
|
||
## Project ideas | ||
|
||
### Index | ||
|
||
- Category: core P4 tooling | ||
- [Project 1: Integrate p4-constraints frontend into p4c](#project-9) | ||
- [Project 1: Integrate p4-constraints frontend into P4C](#project-1) | ||
- [Project 2: BMv2 packet trace support](#project-2) | ||
- [Project 3: Finalize Katran P4 and improve the eBPF backend!](#project-1) | ||
- [Project 3: Finalize Katran P4 and improve the eBPF backend!](#project-3) | ||
- Category: exploratory P4 tooling | ||
- [Project 4: P4MLIR: MLIR-based high-level IR for P4 compilers](#project-3) | ||
- [Project 5: P4MLIR BMv2 Dialect Prototype](#project-4) | ||
- [Project 4: P4MLIR: MLIR-based high-level IR for P4 compilers](#project-4) | ||
- [Project 5: P4MLIR BMv2 Dialect Prototype](#project-5) | ||
- Category: P4 research | ||
- [Project 6: Scaling Decision Tree Algorithm in P4](#project-8) | ||
- [Project 6: Scaling Decision Tree Algorithm in P4](#project-6) | ||
|
||
--- | ||
|
||
### <a id='project-1'></a> Project 1: Integrate p4-constraints frontend into p4c | ||
### <a id='project-1'></a> Project 1: Integrate p4-constraints frontend into P4C | ||
|
||
- [Back to index](#index) | ||
- [Back to index](#index) ⤴️ | ||
|
||
**Basic info** | ||
|
||
- Potential mentors | ||
- Primary: TBD | ||
- Support: TBD | ||
- Primary: Bili Dong | ||
- Support: Jonathan DiLorenzo, Fabian Ruffy | ||
- Skills | ||
- Required: Git, C++ | ||
- Preferred: CMake, Bazel, [P4C](https://github.com/p4lang/p4c) | ||
- Preferred: CMake, Bazel, [P4C](https://github.com/p4lang/P4C) | ||
- Project difficulty: Easy | ||
- Project size: 175 hour | ||
- Discussion thread: TBD | ||
|
||
**Project description** | ||
|
||
[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. | ||
[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. | ||
|
||
<img width="757" alt="image" src="assets/p4_constraints.png"> | ||
<img width="757" alt="image" src="../2024/assets/p4_constraints.png"> | ||
|
||
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: | ||
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. | ||
- **For P4C backend developers**: Easy consumption of the parsed & type-checked constraints. | ||
|
||
[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. | ||
[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** | ||
|
||
- The p4-constraints frontend becomes part of p4c. | ||
- The p4-constraints frontend becomes part of P4C. | ||
|
||
**Resources** | ||
|
||
- https://github.com/p4lang/p4-constraints | ||
- https://github.com/p4lang/p4c | ||
- https://github.com/p4lang/p4c/pull/4387 | ||
- https://github.com/p4lang/P4C | ||
- https://github.com/p4lang/P4C/pull/4387 | ||
|
||
--- | ||
|
||
### <a id='project-2'></a> Project 2: BMv2 packet trace support | ||
|
||
- [Back to index](#index) | ||
- [Back to index](#index) ⤴️ | ||
|
||
**Basic info** | ||
|
||
- Potential mentors | ||
- Primary: TBD | ||
- Support: TBD | ||
- Primary: Bili Dong | ||
- Support: Jonathan DiLorenzo | ||
- Skills | ||
- Required: Git, C++ | ||
- Preferred: P4 | ||
|
@@ -120,7 +137,7 @@ The goal of this project is to provide a mechanism for BMv2 to record the trace | |
|
||
### <a id='project-3'></a> Project 3: Finalize Katran P4 and improve the eBPF backend! | ||
|
||
- [Back to index](#index) | ||
- [Back to index](#index) ⤴️ | ||
|
||
**Basic info** | ||
|
||
|
@@ -129,26 +146,23 @@ The goal of this project is to provide a mechanism for BMv2 to record the trace | |
- Support: To be defined | ||
- Skills | ||
- Required: [eBPF](https://ebpf.io/) | ||
- Preferred: [P4C](https://github.com/p4lang/p4c), P4 | ||
- Preferred: [P4C](https://github.com/p4lang/P4C), P4 | ||
- Project difficulty: Medium | ||
- Project size: 175 hour / 350 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: | ||
|
||
- 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. | ||
- Please demonstrate your **XDP eBPF** skills through contributions to any of the following projects: | ||
- Any existing XDP eBPF project. | ||
- Any personal project that has used XDP eBPF. | ||
- Please demonstrate your **basic P4 knowledge** through contributions to any of the following projects: | ||
- Any existing P4 project, preferably [P4 tutorials](https://github.com/p4lang/tutorials) or [P4C](https://github.com/p4lang/p4c). | ||
- Any personal project that incorporates P4. | ||
|
||
**Project description** | ||
|
||
[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. | ||
[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. | ||
|
||
|
@@ -162,14 +176,14 @@ Finalize the implementation of Katran in P4 helps provide a complex program exam | |
|
||
- 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 | ||
- P4C eBPF backend: https://github.com/p4lang/P4C/tree/main/backends/ebpf | ||
- NIKSS: https://github.com/NIKSS-vSwitch/nikss | ||
|
||
--- | ||
|
||
### <a id='project-4'></a> Project 4: P4MLIR: MLIR-based high-level IR for P4 compilers | ||
|
||
- [Back to index](#index) | ||
- [Back to index](#index) ⤴️ | ||
|
||
**Basic info** | ||
|
||
|
@@ -186,12 +200,11 @@ Finalize the implementation of Katran in P4 helps provide a complex program exam | |
|
||
**Alternative qualification task** | ||
|
||
- For this project, we do not use the general qualification task. Please complete the project-specific qualification task described below. | ||
- MLIR is a required skill for this project. So we expect to see your MLIR skill demonstred in some way. In your application, please include links to your previous MLIR-related contributions (e.g. PRs on GitHub). These contributions: | ||
- Should demonstrate your knowledge of MLIR concepts & internals. | ||
- Could be to [P4MLIR](https://github.com/p4lang/p4mlir). | ||
- Could be to any other MLIR-based compiler project. | ||
- Could be to a personal project. | ||
- Please demonstrate your **MLIR** skills through contributions to any of the following projects: | ||
- [P4MLIR](https://github.com/p4lang/p4mlir). | ||
- Any other MLIR-based compiler project. | ||
- Your personal project is also fine. | ||
- Make sure your contributions could demonstrate your knowledge of MLIR concepts & internals. | ||
|
||
**Project description** | ||
|
||
|
@@ -222,14 +235,14 @@ The exact list of tasks is to be determined with mentors. | |
**Resources** | ||
|
||
- P4MLIR: https://github.com/p4lang/p4mlir | ||
- P4C: https://github.com/p4lang/p4c | ||
- P4C: https://github.com/p4lang/P4C | ||
- MLIR: https://mlir.llvm.org/ | ||
|
||
--- | ||
|
||
### <a id='project-5'></a> Project 5: P4MLIR BMv2 Dialect Prototype | ||
|
||
- [Back to index](#index) | ||
- [Back to index](#index) ⤴️ | ||
|
||
**Basic info** | ||
|
||
|
@@ -245,16 +258,15 @@ The exact list of tasks is to be determined with mentors. | |
|
||
**Alternative qualification task** | ||
|
||
- For this project, we do not use the general qualification task. Please complete the project-specific qualification task described below. | ||
- MLIR is a required skill for this project. So we expect to see your MLIR skill demonstred in some way. In your application, please include links to your previous MLIR-related contributions (e.g. PRs on GitHub). These contributions: | ||
- Should demonstrate your knowledge of MLIR concepts & internals. | ||
- Could be to [P4MLIR](https://github.com/p4lang/p4mlir). | ||
- Could be to any other MLIR-based compiler project. | ||
- Could be to a personal project. | ||
- Please demonstrate your **MLIR** skills through contributions to any of the following projects: | ||
- [P4MLIR](https://github.com/p4lang/p4mlir). | ||
- Any other MLIR-based compiler project. | ||
- Your personal project is also fine. | ||
- Make sure your contributions could demonstrate your knowledge of MLIR concepts & internals. | ||
|
||
**Project description** | ||
|
||
[BMv2](https://github.com/p4lang/behavioral-model) is a popular software simulator target for P4. In our current open source P4 compiler [P4C](https://github.com/p4lang/p4c), when targeting BMv2, a P4 program is converted to a JSON file, which BMv2 uses as a specification for processing packets. In [P4MLIR](https://github.com/p4lang/p4mlir), we plan to add a dialect specifically for modeling [BMv2 JSON primitives](https://github.com/p4lang/behavioral-model/blob/main/docs/JSON_format.md), so that the BMv2 dialect -> BMv2 JSON transformation could be straightforward. | ||
[BMv2](https://github.com/p4lang/behavioral-model) is a popular software simulator target for P4. In our current open source P4 compiler [P4C](https://github.com/p4lang/P4C), when targeting BMv2, a P4 program is converted to a JSON file, which BMv2 uses as a specification for processing packets. In [P4MLIR](https://github.com/p4lang/p4mlir), we plan to add a dialect specifically for modeling [BMv2 JSON primitives](https://github.com/p4lang/behavioral-model/blob/main/docs/JSON_format.md), so that the BMv2 dialect -> BMv2 JSON transformation could be straightforward. | ||
|
||
In the longer term, we expect a compilation path like P4C frontend -> P4HIR dialect -> BMv2 dialect -> BMv2 JSON. For this GSoC project, we will concentrate on implementing a subset of BMv2 JSON primitives in the BMv2 dialect, and implementing the corresponding BMv2 dialect -> BMv2 JSON transformation. | ||
|
||
|
@@ -267,13 +279,13 @@ In the longer term, we expect a compilation path like P4C frontend -> P4HIR dial | |
|
||
- P4MLIR: https://github.com/p4lang/p4mlir | ||
- BMv2 JSON format: https://github.com/p4lang/behavioral-model/blob/main/docs/JSON_format.md | ||
- P4C BMv2 backend: https://github.com/p4lang/p4c/tree/main/backends/bmv2 | ||
- P4C BMv2 backend: https://github.com/p4lang/P4C/tree/main/backends/bmv2 | ||
|
||
--- | ||
|
||
### <a id='project-6'></a> Project 6: Scaling Decision Tree Algorithm in P4 | ||
|
||
- [Back to index](#index) | ||
- [Back to index](#index) ⤴️ | ||
|
||
**Basic info** | ||
|
||
|