Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HTTP/3 improvements, buffers and send hold #10772

Closed
wants to merge 1 commit into from
Closed

Conversation

icing
Copy link
Contributor

@icing icing commented Mar 15, 2023

ngtcp2, using bufq as send and receive buffers

  • eliminating overflow buffer
  • eleminating stream->mem acrobatics
  • suspending uploads (KEEP_SEND_HOLD) while stream window is exhausted

quiche, using bufq for receiving

  • allows direct processing of quiche events
  • windows sizes adjusted to configured buffer sizes
  • all tests succeed with current quiche master
  • internalized the struct HTTP members for curl_quiche.c and removed them from struct HTTP.
  • fixed a bug in retrying request submitting, which quiche may block

@icing icing added HTTP/3 h3 or quic related Post-Curl-8-ntum labels Mar 15, 2023
@github-actions github-actions bot added the tests label Mar 15, 2023
@icing icing force-pushed the h3+bufq branch 3 times, most recently from 3164c51 to fa8ba5c Compare March 21, 2023 08:19
@icing icing changed the title ngctp2 improvements, buffers and send hold HTTP/3 improvements, buffers and send hold Mar 21, 2023
- ngtcp2: using bufq for recv stream data
- internal stream_ctx instead of `struct HTTP` members
  for quiche, ngtcp2 and msh3
- no more QUIC related members in `struct HTTP`
- experimental use of recvmmsg(), disabled by default
  - testing on my old debian box shows no throughput improvements.
  - leaving it in, but disabled, for future revisit
- vquic: common UDP receive code for ngtcp2 and quiche
- vquic: common UDP send code for ngtcp2 and quiche
- added pytest skips for known msh3 failures
- fix unit2601 to survive torture testing
- quiche: using latest `master` from quiche and enabling large download
  tests, now that key change is supported
- fixing test_07_21 where retry handling of starting a stream
  was faulty
- msh3: use bufq for recv buffering headers and data
- msh3: replace fprintf debug logging with LOG_CF where possible
- msh3: force QUIC expire timers on recv/send to have more than
  1 request per second served
@bagder
Copy link
Member

bagder commented Mar 31, 2023

Thanks!

@bagder bagder closed this in 544abee Mar 31, 2023
bch pushed a commit to bch/curl that referenced this pull request Jul 19, 2023
- ngtcp2: using bufq for recv stream data
- internal stream_ctx instead of `struct HTTP` members
  for quiche, ngtcp2 and msh3
- no more QUIC related members in `struct HTTP`
- experimental use of recvmmsg(), disabled by default
  - testing on my old debian box shows no throughput improvements.
  - leaving it in, but disabled, for future revisit
- vquic: common UDP receive code for ngtcp2 and quiche
- vquic: common UDP send code for ngtcp2 and quiche
- added pytest skips for known msh3 failures
- fix unit2601 to survive torture testing
- quiche: using latest `master` from quiche and enabling large download
  tests, now that key change is supported
- fixing test_07_21 where retry handling of starting a stream
  was faulty
- msh3: use bufq for recv buffering headers and data
- msh3: replace fprintf debug logging with LOG_CF where possible
- msh3: force QUIC expire timers on recv/send to have more than
  1 request per second served

Closes curl#10772
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
HTTP/3 h3 or quic related tests
Development

Successfully merging this pull request may close these issues.

None yet

2 participants