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

Quic should support OpenSSL 3.x #81801

Closed
7 of 8 tasks
wfurt opened this issue Feb 8, 2023 · 3 comments
Closed
7 of 8 tasks

Quic should support OpenSSL 3.x #81801

wfurt opened this issue Feb 8, 2023 · 3 comments
Assignees
Labels
area-System.Net.Quic os-linux Linux OS (any supported distro) os-mac-os-x macOS aka OSX tracking-external-issue The issue is caused by external problem (e.g. OS) - nothing we can do to fix it directly
Milestone

Comments

@wfurt
Copy link
Member

wfurt commented Feb 8, 2023

Depends on microsoft/msquic#2039

MsQuic work:

Perf/Stress/Load tests known issues:

Functional tests known issues:

Publishing of the changes:

  • We need packages posted to appropriate feeds
  • Make sure that the published package is usable and works with .NET runtime
    • consume it in some of our docker images
      • Manually verified on Ubuntu 22.04 Helix & Docker images
      • Ubuntu 22.04 x64 (Helix) & Arm64 (Docker) successfully running in CI on the official 2.2.1 msquic package with OpenSSL 3 support

PRs:

Runtime

Functional

  • get some docker images with libmsquic from main that contains OpenSSL 3 -- @wfurt
  • find the intersection between distributions with OpenSSL 3 (from list bellow) and what we use in our infrastructure, list them, and use them for the item above -- @wfurt
    • the end goal is to use libmsquic for OpenSSL 3 on all platforms / distributions in our CI that ship with OpenSSL 3 as default
    • We only test Ubuntu 22.04 (x64 & arm64). In general, runtime seems to be lacking coverage for new OS versions.

Currently there are following Linux distributions we support that use OpenSSL 3 by default:

  • Alpine 3.17+
  • (to be released) Debian 12+
  • Fedora 36+
  • RHEL 9+ (CentOS Stream 9+ etc)
  • Ubuntu 22.04+

With exception of Ubuntu (and unreleased Debian) the distributions offer a compatibility OpenSSL 1.1 package.
We should strategically decide what combinations to test. (perhaps also use extra-platforms pipeline for occasional spot-check)

Stress

We should perhaps have at least one test runs with OpenSSL 3 since that is significantly different variant.

Perf

  • run perf baseline locally, confirm it's somewhat stable and run it with libmsquic main with OpenSSL 3 -- @CarnaViire

Since the perf issues mentioned above, we should perhaps have separate benchmark for Linux with OpenSSL 3.

@wfurt wfurt added os-linux Linux OS (any supported distro) os-mac-os-x macOS aka OSX tracking-external-issue The issue is caused by external problem (e.g. OS) - nothing we can do to fix it directly area-System.Net.Quic labels Feb 8, 2023
@wfurt wfurt added this to the 8.0.0 milestone Feb 8, 2023
@ghost
Copy link

ghost commented Feb 8, 2023

Tagging subscribers to this area: @dotnet/ncl
See info in area-owners.md if you want to be subscribed.

Issue Details

This primarily depends on microsoft/msquic#2039
there are currently functional & performance issues:

I'm opening this to also track additional work for .NET.

functional:

Currently there are following distributions we support that use OpenSSL by default

  • Ubuntu 22.04
  • Fedora 37+
  • Alpine 3.17
  • Centos/RH 9 Stream
  • (to be released) Debian 12

With exception of Ubuntu (and unreleased Debian) the distributions offer compatibility 1.1 package.
We should strategically decide what combinations to test. (perhaps also use extra-plaforms pipeline for occasional spot-check)

Stress:

We should perhaps have at least one test runs with OpenSSL 3 since that is significantly different variant

Perf:

since the perf issues mentioned above, we should perhaps have separate benchmark for Linux with OpenSSL 3.

Author: wfurt
Assignees: -
Labels:

os-linux, os-mac-os-x, tracking-external-issue, area-System.Net.Quic

Milestone: 8.0.0

@ManickaP
Copy link
Member

OpenSSL 3 stress test run results:

HttpStress Run Final Report

[3/10/2023 12:46:33PM] Total: 1,326,928 Runtime: 00:32:41
         0: GET                       Success: 82,594   Canceled: 5,864 Fail: 0
         1: GET Partial               Success: 82,556   Canceled: 5,903 Fail: 0
         2: GET Headers               Success: 82,396   Canceled: 6,064 Fail: 0
         3: GET Parameters            Success: 82,534   Canceled: 5,927 Fail: 0
         4: GET Aborted               Success: 82,525   Canceled: 5,937 Fail: 0
         5: POST                      Success: 82,528   Canceled: 5,935 Fail: 0
         6: POST Multipart Data       Success: 82,566   Canceled: 5,898 Fail: 0
         7: POST Duplex               Success: 82,556   Canceled: 5,909 Fail: 0
         8: POST Duplex Slow          Success: 82,621   Canceled: 5,844 Fail: 0
         9: POST Duplex Dispose       Success: 82,693   Canceled: 5,768 Fail: 0
        10: POST ExpectContinue       Success: 82,527   Canceled: 5,935 Fail: 0
        11: HEAD                      Success: 82,504   Canceled: 5,959 Fail: 0
        12: PUT                       Success: 82,684   Canceled: 5,780 Fail: 0
        13: PUT Slow                  Success: 79,764   Canceled: 8,701 Fail: 0
        14: GET Slow                  Success: 82,509   Canceled: 5,947 Fail: 0
            TOTAL                     Success: 1,235,557        Canceled: 91,371        Fail: 0

Latency(ms) : n=1326928, p50=1.83, p75=2.53, p99=329.39, p999=365.57, max=1005.92

@CarnaViire
Copy link
Member

CarnaViire commented May 19, 2023

All points are done and verified, beside perf which will be measured separately (as it's a separate part from "support") -- filed #86516.

Closing this as completed.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-System.Net.Quic os-linux Linux OS (any supported distro) os-mac-os-x macOS aka OSX tracking-external-issue The issue is caused by external problem (e.g. OS) - nothing we can do to fix it directly
Projects
None yet
Development

No branches or pull requests

3 participants