Skip to content

参数列表

cnbatch edited this page Nov 5, 2023 · 10 revisions

KCP Tube 参数介绍

名称 可设置值 必填 备注
mode client
server
relay
客户端
服务端
中继节点
listen_on 域名或 IP 地址 只能填写域名或 IP 地址
listen_port 1 - 65535 以服务端运行时可以指定端口范围
destination_port 1 - 65535 以客户端运行时可以指定端口范围
destination_address IP地址、域名 填入 IPv6 地址时不需要中括号
dport_refresh 0 - 32767 单位“秒”。不填写表示使用预设值 60 秒。
1 至 20 按 20 秒算,大于 32767 按 32767 秒算。
设为 0 表示禁用。
encryption_algorithm AES-GCM
AES-OCB
chacha20
xchacha20
none
AES-256-GCM-AEAD
AES-256-OCB-AEAD
ChaCha20-Poly1305
XChaCha20-Poly1305
不加密
encryption_password 任意字符 视情况 设置了 encryption_algorithm 且不为 none 时必填
udp_timeout 0 - 65535 单位“秒”。预设值 180 秒,设为 0 则使用预设值
该选项表示的是,UDP 应用程序 ↔ kcptube 之间的超时设置
keep_alive 0 - 65535 单位“秒”。预设值为 0,等于停用 Keep Alive
该选项是指两个KCP端之间的Keep Alive
可单方面启用,用于检测通道是否停止响应。若超过30秒仍未有回应,就关闭通道。
mux_tunnels 0 - 65535 预设值为 0,等于不使用多路复用通道
该选项是指两个KCP端之间的多路复用通道数
仅限客户端启用
stun_server STUN 服务器地址 listen_port 为端口范围模式时不可使用
log_path 存放 Log 的目录 不能指向文件本身
kcp_mtu 正整数 预设值1440。调用 ikcp_setmtu() 设置的值,亦即 UDP 数据包内数据内容的长度
kcp manual
fast1 - 6
regular1 - 5
 
手动设置
快速
常速
(末尾数字:数值越小,速度越快)
kcp_sndwnd 正整数 预设值见下表,可以单独覆盖
kcp_rcvwnd 正整数 预设值见下表,可以单独覆盖
kcp_nodelay 正整数 视情况 kcp=manual 时必填,预设值见下表
kcp_interval 正整数 视情况 kcp=manual 时必填,预设值见下表
kcp_resend 正整数 视情况 kcp=manual 时必填,预设值见下表
kcp_nc yes
true
1
no
false
0
视情况 kcp=manual 时必填,预设值见下表
outbound_bandwidth 正整数 出站带宽,用于通讯过程中动态更新 kcp_sndwnd 的值
inbound_bandwidth 正整数 入站带宽,用于通讯过程中动态更新 kcp_rcvwnd 的值
ipv4_only yes
true
1
no
false
0
若系统禁用了 IPv6,须启用该选项并设为 yes 或 true 或 1
blast yes
true
1
no
false
0
尝试忽略 KCP 流控设置,尽可能迅速地转发数据包。可能会导致负载过大
[listener] N/A
(仅限中继模式)
中继模式的标签,用于指定监听模式的 KCP 设置
该标签表示与客户端交互数据
[forwarder] N/A
(仅限中继模式)
中继模式的标签,用于指定转运模式的 KCP 设置
该标签表示与服务端交互数据
[custom_input] N/A 自定义映射模式的标签,使用方法请参考 自定义映射使用方法
[custom_input_tcp] N/A 自定义映射模式的标签,使用方法请参考 自定义映射使用方法
[custom_input_udp] N/A 自定义映射模式的标签,使用方法请参考 自定义映射使用方法

其中,encryption_algorithm 以及 encryption_password 在通讯的两端必须保持一致。

outbound_bandwidth 与 inbound_bandwidth

可用后缀:K / M / G

后缀区分大小写,大写按二进制 (1024) 计算,小写按十进制 (1000) 计算。

  • 填入 1000,表示带宽为 1000 bps

  • 填入 100k,表示带宽为 100 kbps (100000 bps)

  • 填入 100K,表示带宽为 100 Kbps (102400 bps)

  • 填入 100M,表示带宽为 100 Mbps (102400 Kbps)

  • 填入 1G,表示带宽为 1 Gbps (1024 Mbps)

注意,是 bps (Bits Per Second),不是 Bps (Bytes Per Second)。

需要提醒的是,填写的带宽值不应超出实际带宽,以免造成发送窗口拥堵导致阻塞。

KCP 模式预设值

快速模式 kcp_sndwnd kcp_rcvwnd kcp_nodelay kcp_interval kcp_resend kcp_nc
fast1 2048 2048 1 1 2 1
fast2 2048 2048 2 1 2 1
fast3 2048 2048 1 1 3 1
fast4 2048 2048 2 1 3 1
fast5 2048 2048 1 1 4 1
fast6 2048 2048 2 1 4 1
常速模式 kcp_sndwnd kcp_rcvwnd kcp_nodelay kcp_interval kcp_resend kcp_nc
regular1 1024 1024 1 1 5 1
regular2 1024 1024 2 1 5 1
regular3 1024 1024 0 1 2 1
regular4 1024 1024 0 15 2 1
regular5 1024 1024 0 30 2 1

其中,丢包率越高(高于 10%),kcp_nodelay=1 就比 kcp_nodelay=2 越有优势。在丢包率不特别高的情况下,kcp_nodelay=2 可使延迟抖动更为平滑。

如果想减少流量浪费、不介意延迟稍微增加,可以选择 regular 模式。
对于不追求低延迟、只需要大流量传输的场景,请使用 regular 3 ~ 5
建议同时开启 blast=1 设置。

模式解读(简易版)

先说结论:模式的数字越靠前,响应速度越迅速。fast 模式稍有不同,请继续阅读。

kcp_sndwnd 指的是发送缓冲区的大小,kcp_rcvwnd 指的是接收缓冲区的大小。这两项会影响到收发速率。

kcp_nodelay 指的是 KCP 的 nodelay 变量,用于选择超时重传等待时长的增长速度。原本只有 0、1 之分,0 表示不使用 KCP 自身的快速重传,1 表示启用。

  • 数值为 0,则简单叠加,即新的时间是上一次时间的简单乘 2。
  • 数值为 1,表示新的等待时间仅为上一次时间乘 1.5,而不是2。
  • 2023 年 5 月,KCP 原作者又增加了数值 2,类似于数值 1。区别在于,数值 1 所用的“上一次时间”来自于当前数据包自己统计的数值,而数值 2 则使用 KCP 内部单独计算的平均延迟时间。
    这就是为什么前面提到过“kcp_nodelay=2 可使延迟抖动更为平滑”。

kcp_interval 指的是 KCP 内部更新间隔,interval 变量。

kcp_resend 指的是 KCP 内部的 fastresend 变量值,数值为 0 则表示关闭快速重传功能。若数值不为 0,表示跨越了指定次数后就不再等待,直接重传。

kcp_nc 指的是 ikcp_nodelay() 的最后一个参数 nc,0 表示不关闭流控, 1 表示关闭流控。此处应当设置成 1,否则传输速度会十分缓慢。

Log 文件

在首次获取打洞后的 IP 地址与端口后,以及打洞的 IP 地址与端口发生变化后,会向 Log 目录创建 ip_address.txt 文件(若存在就覆盖),将 IP 地址与端口写进去。

获取到的打洞地址会同时显示在控制台当中。

log_path= 必须指向目录,不能指向文件本身。

如果不需要写入 Log 文件,那就删除 log_path 这一行。

STUN Servers

NatTypeTeste找到的普通 STUN 服务器:

  • stun.syncthing.net
  • stun.qq.com
  • stun.miwifi.com
  • stun.bige0.com
  • stun.stunprotocol.org

Natter找到的STUN 服务器:

  • fwa.lifesizecloud.com
  • stun.isp.net.au
  • stun.freeswitch.org
  • stun.voip.blackberry.com
  • stun.nextcloud.com
  • stun.stunprotocol.org
  • stun.sipnet.com
  • stun.radiojar.com
  • stun.sonetel.com
  • stun.voipgate.com

其它 STUN 服务器:public-stun-list.txt