Skip to content

g3proxy feature proposal #979

@zh-jq

Description

@zh-jq

Enhanments

  1. Support Post-Quantum Cryptography algorithms and enable by default

  2. Support RFC 9209 Proxy-Status HTTP Response Header Field

Refactor

  1. Support type specific metrics for servers/escapers

    Add a new EmitStats trait, with a emit method, and impl it for all server & escaper stats.

    Then remove ServerStats and EscaperStats traits, and just store ArcEmitStats in server & escaper stats registry.

  2. Add a new rust-variant-ssl rustls backend and replace ring

Breaking Changes

A major version bump will be needed for the following changes:

  1. Chain proxy-* escapers on top of other escapers

    Remove the tcp-connect and udp-connect code in proxy-* escapers, and let them use the corresponding tcp/udp methods of the next escaper.

    This will remove a lot of code, and will allow the chaining of multiple proxies at one place.

    The disadvantage is that the returned tcp/udp socket in wrapped in Box, which may decrease the performance a bit.

Big new ones

A minor version bump will be needed for the following changes:

  1. Support remote user authentication

    • Password based such as LDAP / Radius

    • Kerberos

  2. Add reverse proxy connection support

    Support ngrok/frp like features

    • Allow to set direct-float escaper to harbor mode, it will collect client connections and use them when needed.

    • Allow port servers to set harbor config field, they will send the client connections directly to that harbor mode escaper.

    • Add an anchor-tcp server, it will act as a client and pool connect via it's escaper to a remote g3proxy harbor. When new connection request from the remote harbor, it will open new connections via it's next server / escaper.

    • Add an anchor-quic server, which pool connect to the remote harbor in QUIC.

  3. Support cluster level rate limitation and speed limitation

  4. Support H2 http proxy

  5. Support RFC 9298 Proxying UDP in HTTP

  6. Use EBPF to hot-upgrade REUSEPORT sockets gracefully on Linux

    This is required to hot upgrade UDP sockets.

  7. Support H3 http proxy

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions