Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Neqo, the Mozilla Firefox implementation of QUIC in Rust

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
NotificationsYou must be signed in to change notification settings

mozilla/neqo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

neqo logo

To build Neqo:

cargo build

This will use a system-installedNSS library if it is new enough. (See "Build with Separate NSS/NSPR" below if NSS is not installed or it is deemed too old.)

To run test HTTP/3 programs (neqo-client andneqo-server):

./target/debug/neqo-server'[::]:12345'./target/debug/neqo-client'https://[::]:12345/'

Build with separate NSS/NSPR

You can cloneNSS andNSPR into the same directory and export anenvironment variable calledNSS_DIR pointing to NSS. This causes the build touse the existing NSS checkout. However, in order to run anything that dependson NSS, you need to set an environment as follows:

Linux

export LD_LIBRARY_PATH="$(find. -name libssl3.so -print| head -1| xargs dirname| xargs realpath)"

macOS

export DYLD_LIBRARY_PATH="$(find. -name libssl3.dylib -print| head -1| xargs dirname| xargs realpath)"

Note: If you did not already compile NSS separately, you need to haveMercurial (hg), installed. NSS builds requireGYP andNinja to be installed.

Debugging Neqo

QUIC logging

Enable generation ofQLOG logs with:

target/debug/neqo-server'[::]:12345' --qlog-dir.target/debug/neqo-client'https://[::]:12345/' --qlog-dir.

You can of course specify a different directory for the QLOG files.You can upload QLOG files toqvis to visualize the flows.

UsingSSLKEYLOGFILE to decrypt Wireshark logs

You can export TLS keys by setting theSSLKEYLOGFILE environment variableto a filename to instruct NSS to dump keys in thestandard formatto enable decryption byWireshark and other tools.

Using RUST_LOG effectively

As documented in theenv_logger documentation,theRUST_LOG environment variable can be used to selectively enable log messagesfrom Rust code. This works for Neqo's command line tools, as well as for when Neqo isincorporated into Gecko, althoughGecko needs to be built in debug mode.

Some examples:

  1. RUST_LOG=neqo_transport::dump ./mach run

    lists sent and received QUIC packets and their frames' contents only.

  2. RUST_LOG=neqo_transport=debug,neqo_http3=trace,info ./mach run

    sets adebug log level fortransport,trace level forhttp3, andinfo loglevel for all other Rust crates, both Neqo and others used by Gecko.

  3. RUST_LOG=neqo=trace,error ./mach run

    setstrace level for all modules starting withneqo, and setserror as minimum log level for other unrelated Rust log messages.

Trying in-development Neqo code in Gecko

In a checked-out copy of Gecko source, set[patches.*] values for the fourNeqo crates to local versions in the rootCargo.toml. For example, if Neqowas checked out to/home/alice/git/neqo, add the following lines to the rootCargo.toml.

[patch."https://github.com/mozilla/neqo"]neqo-bin = {path ="/home/alice/git/neqo/neqo-bin" }neqo-common = {path ="/home/alice/git/neqo/neqo-common" }neqo-crypto = {path ="/home/alice/git/neqo/neqo-crypto" }neqo-http3 = {path ="/home/alice/git/neqo/neqo-http3" }neqo-qpack = {path ="/home/alice/git/neqo/neqo-qpack" }neqo-transport = {path ="/home/alice/git/neqo/neqo-transport" }neqo-udp = {path ="/home/alice/git/neqo/neqo-udp" }

Then run the following:

./mach vendor rust

Compile Gecko as usual with

./mach build

Note: Using newer Neqo code with Gecko may also require changes (likely toneqo_glue) ifsomething has changed.

Connect with Firefox to local neqo-server

  1. Runneqo-server viacargo run --bin neqo-server -- 'localhost:12345' --db ./test-fixture/db.
  2. On Firefox, setabout:config preferences:
  • network.http.http3.alt-svc-mapping-for-testing tolocalhost;h3=":12345"
  • network.http.http3.disable_when_third_party_roots_found tofalse
  1. Optionally enable logging viaabout:logging or profiling viahttps://profiler.firefox.com/.
  2. Navigate tohttps://localhost:12345 and accept self-signed certificate.

[8]ページ先頭

©2009-2025 Movatter.jp