github.com/ipfans/trojan-go@v0.11.0/docs/content/advance/mux.md (about)

     1  ---
     2  title: "启用多路复用提升网络并发性能"
     3  draft: false
     4  weight: 1
     5  ---
     6  
     7  ### 注意,Trojan不支持这个特性
     8  
     9  Trojan-Go支持使用多路复用提升网络并发性能。
    10  
    11  Trojan协议基于TLS。在一个TLS安全连接建立之前,连接双方需要进行密钥协商和交换等步骤确保后续通讯的安全性。这个过程即为TLS握手。
    12  
    13  目前GFW对于TLS握手存在审查和干扰,同时由于出口网络拥塞的原因,普通的线路完成TLS握手通常需要将近一秒甚至更长的时间。这可能导致浏览网页和观看视频的延迟提高。
    14  
    15  Trojan-Go使用多路复用的方式解决这一问题。每个建立的TLS连接将承载多个TCP连接。当新的代理请求到来时,不需要和服务器握手发起一个新的TLS连接,而是尽可能重复使用已有的TLS连接。以此减少频繁TLS握手和TCP握手的带来的延迟。
    16  
    17  启用多路复用不会增加你的链路速度(甚至会有所减少),而且可能会增加服务器和客户端的计算负担。可以粗略地理解为,多路复用牺牲网络吞吐和CPU功耗,换取更低的延迟。在高并发的情景下,如浏览含有大量图片的网页时,或者发送大量UDP请求时,可以提升使用体验。
    18  
    19  激活```mux```模块,只需要将```mux```选项中```enabled```字段设为true即可,下面是一个客户端的例子
    20  
    21  ```json
    22  ...
    23  "mux" :{
    24      "enabled": true
    25  }
    26  ```
    27  
    28  只需要配置客户端即可,服务端可以自动适配,无需配置```mux```选项。
    29  
    30  完整的mux配置如下
    31  
    32  ```json
    33  "mux": {
    34      "enabled": false,
    35      "concurrency": 8,
    36      "idle_timeout": 60
    37  }
    38  ```
    39  
    40  ```concurrency```是每个TLS连接最多可以承载的TCP连接数。这个数值越大,每个TLS连接被复用的程度就更高,握手导致的延迟越低。但服务器和客户端的计算负担也会越大,这有可能使你的网络吞吐量降低。如果你的线路的TLS握手极端缓慢,你可以将这个数值设置为-1,Trojan-Go将只进行一次TLS握手,只使用唯一的一条TLS连接进行传输。
    41  
    42  ```idle_timeout```指的是每个TLS连接空闲多长时间后关闭。设置超时时间,**可能**有助于减少不必要的长连接存活确认(Keep Alive)流量传输引发GFW的探测。你可以将这个数值设置为-1,TLS连接在空闲时将被立即关闭。