aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormarshall <stmr@umich.edu>2023-08-24 20:52:45 -0400
committermarshall <stmr@umich.edu>2023-08-24 20:52:45 -0400
commite5a8502c0607ff1ff892b4b39202a55b84dff5df (patch)
treed2e77915121c0b2349a93fee4ee9f50d33b2468c
parenteb95c07d4b7b57f211b0e845531cd0428835754e (diff)
downloadwww-e5a8502c0607ff1ff892b4b39202a55b84dff5df.tar.gz
www-e5a8502c0607ff1ff892b4b39202a55b84dff5df.zip
GSoC-QUIC: fill in answers
-rw-r--r--template/news/2023-08-GSoC-QUIC.html.j211
1 files changed, 10 insertions, 1 deletions
diff --git a/template/news/2023-08-GSoC-QUIC.html.j2 b/template/news/2023-08-GSoC-QUIC.html.j2
index 13a96123..4829b514 100644
--- a/template/news/2023-08-GSoC-QUIC.html.j2
+++ b/template/news/2023-08-GSoC-QUIC.html.j2
@@ -5,14 +5,23 @@
5<p> 5<p>
6<ul> 6<ul>
7<li>A short description of the goals of the project.</li> 7<li>A short description of the goals of the project.</li>
8<li>What you did (also include quich packaging).</li> 8The goal of this project was to develop a new transport, QUIC, for the Transport Next Generation (TNG) service.
9<li>What you did (also include quiche packaging).</li>
10First, I had to decide on a library that can process QUIC packets and would be available to users running different operating systems.
11We chose to go with Cloudflare's Quiche library because the C API seemed simpler than other available libraries. Installing cloudflare-quiche via the Homebrew package manager (MacOS) did not actually install the libraries properly for linking with other C programs so I made a pull request in the Homebrew repository and fixed the formula.
12After this, I worked on handling the receiving functionality of the communicator. This involved reading from the socket then processing the QUIC packets using the Quiche library. Then I implemented the ability to send messages in a similar manner. One of the last steps involved connecting everything together with the transport service so that the communicator can receive information about peers and relay messages.
9<li>The current state.</li> 13<li>The current state.</li>
14The QUIC communicator currently functions and passes basic communicator tests. That being said, there are some latency issues that need to be addressed.
10<li>What&#39;s left to do.</li> 15<li>What&#39;s left to do.</li>
16We still need to develop a more robust solution to the certificate generation so that the Quiche API functions properly. Currently, we are using static, example certificates. Adding timers to each connection so that a timeout will trigger a connection to close also needs to be done. Finally, we should look into lowering the latency by finding where the code is too slow and optimizing it.
11<li>What code got merged (or not) upstream.</li> 17<li>What code got merged (or not) upstream.</li>
18The QUIC communicator got merged upstream and is currently an experimental feature. This is because the packaging situation with Quiche makes it difficult for some users to install the library and there still may be bugs lingering in the QUIC communicator. More testing is needed.
12<li>Any challenges or important things you learned during the project.</li> 19<li>Any challenges or important things you learned during the project.</li>
20Something challenging about the project was reverse engineering the Quiche C API because it has such limited documentation. I learned how to make use of the API by looking at the very simple example client and server that is provided in the Quiche repository. There is documentation for the Rust API which seems to operate pretty similarly, so this was helpful too at times. I overcame this challenge with the help and guidance of my mentor Martin Schanzenbach.
13</ul> 21</ul>
14</p> 22</p>
15<p> 23<p>
16 Other notes on experience. 24 Other notes on experience.
17</p> 25</p>
26Overall, my experience with GNUnet was fantastic. My mentors were friendly and consistently available when I needed help. I plan to continue contributing to GNUnet in the future.
18{% endblock body_content %} 27{% endblock body_content %}