Skip to content

策略

policy 块设置按等级的连接超时、缓冲区大小,以及统计子系统应当填充 哪些计数器。

顶层选项

字段类型默认值允许值描述
levelsmap[uint32]*Policy{}{ "<level>": Policy }按用户等级(uint32)键入的映射。每个值是一个 Policy 对象,其旋钮作用于该等级用户的流量。
system*SystemPolicy(unset)SystemPolicy系统级策略。目前只承载入站 / 出站四个流量计数器开关。

源码: infra/conf/policy.go:73-76 · 锚定版本 v26.6.1 (94ffd50)

单等级 Policy

levels 下的每个条目都是一个 Policy 对象。等级 0 是未显式设置 等级的用户的默认值。

字段类型默认值允许值描述
handshake*uint324<seconds>入站完成握手的最长时间;超过则关闭连接。
connIdle*uint32300<seconds>空闲超时。无流量持续达此秒数则关闭连接。
uplinkOnly*uint322<seconds>下行关闭后的宽限窗口;过该秒数再关闭上行。
downlinkOnly*uint325<seconds>上行关闭后的宽限窗口;过该秒数再关闭下行。
statsUserUplinkboolfalsetrue | false按用户统计上行字节数(需要存在 stats 块)。
statsUserDownlinkboolfalsetrue | false按用户统计下行字节数。
statsUserOnlineboolfalsetrue | false跟踪单用户的在线状态。
bufferSize*int32(internal)<KB> | -1单连接的内部缓冲区大小(KB)。-1(或任意负值)表示不限。

源码: infra/conf/policy.go:7-16 · 锚定版本 v26.6.1 (94ffd50)

SystemPolicy

字段类型默认值允许值描述
statsInboundUplinkboolfalsetrue | false按入站 tag 的上行字节计数器。
statsInboundDownlinkboolfalsetrue | false按入站 tag 的下行字节计数器。
statsOutboundUplinkboolfalsetrue | false按出站 tag 的上行字节计数器。
statsOutboundDownlinkboolfalsetrue | false按出站 tag 的下行字节计数器。

源码: infra/conf/policy.go:55-60 · 锚定版本 v26.6.1 (94ffd50)

示例

json
{
  "stats": {},
  "policy": {
    "levels": {
      "0": {
        "handshake": 4,
        "connIdle": 300,
        "uplinkOnly": 2,
        "downlinkOnly": 5,
        "statsUserUplink": true,
        "statsUserDownlink": true,
        "bufferSize": 0
      }
    },
    "system": {
      "statsInboundUplink": true,
      "statsInboundDownlink": true,
      "statsOutboundUplink": true,
      "statsOutboundDownlink": true
    }
  }
}

说明

  • 超时在 Go 结构体中是指针。省略字段会保留内部默认值;显式置 0 则代表该字段「无超时」。
  • bufferSizePolicy.Buildinfra/conf/policy.go:42-46)中 会乘以 1024 —— JSON 值的单位是 KB。负值禁用上限。
  • 单用户计数器要求对应入站上的用户对象具有非空的等级,且其数值与 policy.levels 下的某个键匹配。

源码: infra/conf/policy.go:7-76 · v26.6.1 (94ffd50)

由 Argsment 出品的 Core Tutorial