跳到主要内容

TURN 检测

不填凭证时只检测连通与是否拒绝错误凭证。

UDP隧道使用—待检测
  1. 连通STUN 请求经 UDP 3478 得到回应

    —

  2. 拒绝错误凭证随机生成的用户名与密码分不到中继

    —

  3. 分配中继填写的凭证分到公网中继地址

    —

  4. 经中继往返一端只用中继,数据往返 20 次

    —

TCP对比—待检测
  1. 连通TURN 请求经 TCP 3478 得到回应

    —

  2. 拒绝错误凭证随机生成的用户名与密码分不到中继

    —

  3. 分配中继填写的凭证分到公网中继地址

    —

  4. 经中继往返两端都经中继,数据往返 20 次

    —

TLS对比—待检测
  1. 连通TURN 请求经 TLS 5349 得到回应

    —

  2. 拒绝错误凭证随机生成的用户名与密码分不到中继

    —

  3. 分配中继填写的凭证分到公网中继地址

    —

  4. 经中继往返两端都经中继,数据往返 20 次

    —

中继吞吐与丢包

—

填写用户名与密码后才能测

丢包—%不重传的包以 0.8 Mbps 定速发送 5 秒
时延—ms经中继单程的中位数,满速时 —
吞吐—Mbps与隧道一样走可靠的数据通道,满速发送 8 秒,前 2 秒不计

检测说明

  • 检测全程在浏览器里经 WebRTC 完成,UDP、TCP 与 TLS 三种接入方式同时检测,默认检测当前站点的服务器。
  • 服务器框的端口供 UDP 与 TCP 共用,不填时为 3478;TLS 端口不填时为 5349。两者对应 coturn 的 listening-port 与 tls-listening-port。粘贴 turns: 地址时,它的端口填进 TLS 端口。
  • 结论只看 UDP:点对点隧道两端使用的 libjuice 只走 UDP。TCP 与 TLS 用来对比其他服务器,或检查封了 UDP 的网络,连不上不影响隧道。TLS 跑在 TCP 上,要求证书与填写的域名相符;浏览器不支持 UDP 上的 DTLS,turns: 地址一律经 TCP。
  • 用户名与密码只交给 TURN 服务器校验,不发给本站,也不保存。
  • 拒绝错误凭证用随机生成的用户名与密码申请中继:能分到,说明服务器不校验凭证,任何人都能借它转发流量。
  • 经中继往返由页内两个连接完成。UDP 下一端只用中继、另一端只用 STUN,数据要从你的网络进入服务器的中继端口段,连得通才说明安全组与防火墙放行了这一段;TCP 与 TLS 下两端都经中继,模拟两端都封了 UDP 的网络。
  • 中继吞吐与丢包另行测量,只走 UDP,两端与经中继往返相同:数据从你的网络进入服务器、再回到你的网络,结果不超过你的上行、下行与服务器带宽中最小的那个。云服务器多按出方向带宽限速,中继的吞吐常常就卡在这里。
  • 先以 0.8 Mbps 定速发送 5 秒不重传的包,数出丢包,并由包里的发送时刻算出时延:线路不满时丢的包才是线路本身丢的,发送结束 1 秒后还没到的包记为丢失。再以与隧道相同的可靠、有序数据通道满速发送 8 秒,前 2 秒的慢启动不计,取有效载荷速率;同时以每秒 20 个探测包测满速时的时延,排队越深涨得越多。
  • 时延是包从你的网络经服务器回到你的网络的时间,约等于你到服务器的往返时延;经中继往返一项是来回两趟,数值约为它的两倍。
  • 满速时会占满服务器的带宽,同一台服务器上的其他服务会短暂变慢。按流量计费的服务器上,每测一次进出服务器各约 N MB,N 为测得吞吐的 Mbps 数,如 50 Mbps 时约 50 MB。
  • 服务器上的配置,如容器参数、日志与对内网对端的拒绝,不在本页的检测范围,要到服务器上查看。