PPanel Edge

批次、限制与错误处理

实现幂等流量批次、ETag、退避、设备封禁与协议限制。

流量幂等

/usage 的 up / down 是新增字节的字符串整数,不能发送累计总量。每个持久化批次有递增 batch_seq,窗口不超过 1 小时,单批最多 5,000 条,单条上下行各不超过 10 TiB。同用户不同入站分条,服务端按订阅汇总。

超时或断连必须重发同序号、同内容,不能把新流量并入未确认批次。响应 accepted/duplicate 后删除批次;stale 表示超出保留窗口,删除并记录。下一序号取本地值与服务端 next_batch_seq 的最大值。409 node.batch_conflict 表示同序号摘要不同,按心跳取得新序号重发原条目并告警。

窗口倒置或超长时所有条目以 window_invalid 拒绝,但批次诊断仍持久化以保证重放一致。未来窗口按接收时间归属并提示时钟偏差。迟到用量仍计入原订阅,不授予新权限。

传输与在线

请求支持 gzip,解压后上限 1 MiB。ETag 按弱比较处理,304 也携带 ETag。/config 包含敏感密钥,响应不可缓存到共享缓存或日志。在线报告每用户最多 64 个 IP、单次最多 10,000 用户。收到 blocked_ips 后断开该 CIDR 现有连接并拒绝新连接(IPv4 /32、IPv6 /64)。

错误动作

状态动作
401停止正常调用并告警,每 5 分钟重试
403 disabled清空该面板用户并停止服务,每 5 分钟重试
426缺失或不支持协议,提示升级
413拆分批次,各自使用新序号
422记录无效载荷,丢弃并修复实现
429 / 5xx从 5 秒指数退避至 5 分钟,±20% 抖动,遵守 Retry-After

上报类端点合计每节点每分钟 10 次,配置和用户列表各 30 次。按服务端间隔调度,避免故障风暴。增量用户列表需先在 capabilities 中协商;之后可带 ?since=<access_version>,响应给出 added、removed、changed 与完整入站映射,没有有效基线时返回全量(full: true)。完整字段见自动生成参考。