Skip to content

SunnyQuic outbound

Sunnyquic outbound configuration

example:

addr: "12.34.56.7:1089" # or "[12:ff::ff]:1089" for dualstack
password: "12345678"
username: "87654321"
server-name: "echo.free.beeceptor.com"
alpn: ["h3"]
initial-mtu: 1400
congestion-control: bbr
zero-rtt: true
over-stream: false  # true for udp over stream, false for udp over datagram

Fields

username

  • Type: string
  • Required: yes

username, must be the same as the server

password

  • Type: string
  • Required: yes

password, must be the same as the server

addr

  • Type: string
  • Required: yes

Shadowquic server address. example: 127.0.0.0.1:443, www.server.com:443, [ff::f1]:4443

extra-paths

  • Type: list of string
  • Required: no
  • Default: (type default)

Additional paths for multipath quic IPV4 or IPv6 path are all fine. Right now only one path is used to sending data, the rest paths are backup paths. See https://github.com/n0-computer/quinn/issues/389 for more details.

It's recommended to use IPV4 and IPV6 path together for dual stack network.

extra-paths:
  - "[12:ff::ff]:1089"

max-path-num

  • Type: u32
  • Required: no
  • Default: 12

Maximum number of paths for multipath quic, 0 for disabling multipath

server-name

  • Type: string
  • Required: yes

Server name, must be the same as the server jls_upstream domain name

alpn

  • Type: list of string
  • Required: no
  • Default: vec!["h3".into()]

Alpn of tls, default is ["h3"], must have common element with server

cert-path

  • Type: path (optional)
  • Required: no

Certificate path for tls

initial-mtu

  • Type: u16
  • Required: no
  • Default: 1300

Initial mtu, must be larger than min mtu, at least to be 1200. 1400 is recommended for high packet loss network. default to be 1300

congestion-control

Congestion control, default to "bbr", supported: "bbr", "new-reno", "cubic"

zero-rtt

  • Type: bool
  • Required: no
  • Default: true

Set to true to enable zero rtt, default to true

over-stream

  • Type: bool
  • Required: no
  • Default: false

Transfer udp over stream or over datagram. If true, use quic stream to send UDP, otherwise use quic datagram extension, similar to native UDP in TUIC

min-mtu

  • Type: u16
  • Required: no
  • Default: 1290

Minimum mtu, must be smaller than initial mtu, at least to be 1200. 1400 is recommended for high packet loss network. default to be 1290

keep-alive-interval

  • Type: u32
  • Required: no
  • Default: 0

Keep alive interval in milliseconds 0 means disable keep alive, should be smaller than 30_000(idle time). Disabled by default.

gso

  • Type: bool
  • Required: no
  • Default: true

Enable QUIC Generic Segmentation Offload (GSO). Controls [quinn::TransportConfig::enable_segmentation_offload]. When supported, GSO reduces CPU usage for bulk sends; unsupported environments may see transient startup packet loss. Enabled by default

mtu-discovery

  • Type: bool
  • Required: no
  • Default: true

Enable auto MTU discovery, default to true For stable udp network, it's better to disable it and set a proper initial mtu

cipher-suite-preference

Optional TLS 1.3 cipher suite preference. If unset, use rustls/ring default preference order.

fw-mark

  • Type: u32 (optional)
  • Required: no

fw_mark on linux

bind-interface

binding interface of this outgoing packet.

If bind_interface is set, the outgoing packet will be sent from the specified interface. Recommend to use to cooporate with other tun based proxy like sing-box/mihomo

Example:

# by ip address
bind-interface: "127.0.0.1"
# by interface name
bind-interface: "eth0"

protect-path

  • Type: path (optional)
  • Required: no

Android Only. the unix socket path for protecting android socket