Skip to content

swananan/feather-quic

Repository files navigation

feather-quic

用 Rust 实现的轻量级 QUIC 协议栈

English

feather-quic 是一个个人实验性质项目,使用 Rust 实现 QUIC 协议的同时,也实现了一个客户端工具 feather-quic-tool,提供更多 QUIC 协议底层相关的灵活配置,用来对 QUIC 协议进行测试和学习。另外,我会写一系列博客来记录我在开发过程中的想法以及一些有意思的细节:

用 Rust 从零开始写 QUIC:写在刚开始

用 Rust 从零开始写 QUIC:Runtime

用 Rust 从零开始写 QUIC:尝试深入分析 QUIC 握手😂

用 Rust 从零开始写 QUIC:实现 TLS 1.3 握手和 QUIC-TLS Key Update

用 Rust 从零开始写 QUIC:Reliability

用 Rust 从零开始写 QUIC:实现 QUIC 多路复用流传输和流量控制

用 Rust 从零开始写 QUIC:实现 QUIC 连接关闭和错误处理

用 Rust 从零开始写 QUIC: MTU 探测

用 Rust 从零开始写 QUIC: 实现连接迁移

未完待续


构建和调试

目前在 Linux 和 Mac 平台都进行过测试,Windows 平台理论上支持。

构建命令:

cargo build --all-targets

运行测试:

  1. 启动 echo server:
RUST_LOG=trace ./target/debug/echo-server --listen 127.0.0.1:44437
  1. 使用 feather-quic-tool 进行 echo 测试:
RUST_LOG=trace ./target/debug/feather-quic-client-tool \ --target-address 127.0.0.1:44437 \ --sni localhost \ --first-initial-packet-size 1200 \ --scid dddd1baa12 \ --alpn echo \ -e feather-quic-integration-tests/src/tests/test_files/basic_echo_input \ --ssl-key-log ~/sslkey.log

调试:

  • 可以借助 ssl-key-log 生成的对称密钥文件,然后使用 tshark 或 WireShark 查看 QUIC 数据包
  • 可以直接查看 feather-quic 内部日志

欢迎贡献

欢迎任何形式的贡献!如果有建议或改进,可以通过 Issue 或 Pull Request 提交。


许可证

本项目使用 MIT 许可证,详细信息请查看 LICENSE 文件。

About

feather-quic is an experimental, lightweight QUIC protocol stack written in Rust, complete with a flexible client tool for deep-dive testing and learning

Topics

Resources

License

MIT, MIT licenses found

Licenses found

MIT
LICENSE
MIT
LICENSE.md

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages