Skip to content

建议给 IPv6 抽样略过最后 4 段,避免同子网无效测速 #643

@CrazyBoyFeng

Description

@CrazyBoyFeng

功能需求

根据 IPv6 规范,/64 子网(后 4 段共 8 个字节)是标准的二层网络边界。同一个 /64 内的 IP 共享外部路由节点。也就是说, /64 肯定在同一个物理线路上,抽取多个 IP 进行测试没有太大的意义。
当前如果输入 /64 段,程序会抽出一百左右 IP 进行重复测试。但每个 /64 只取一个就够了。

预期目标

改进很简单,把原本循环采样前14个字节(IPv6 地址共 16 个字节,每两个字节是一段),变为循环采样前 8 个字节,后八个字节(主机位)只随机一次:


r.firstIP[15] = randIPEndWith(255) // 随机 IP 的最后一段
r.firstIP[14] = randIPEndWith(255) // 随机 IP 的最后一段

改为:

for i := 8; i < 16; i++ {             // 随机 /64 主机位,即后 4 段,共 8 位字节
    r.firstIP[i] = randIPEndWith(255)
}

for i := 13; i >= 0; i-- { // 从倒数第三位开始往前随机

改为:

for i := 7; i >= 0; i-- {            // 从第 8 位字节开始往前随机

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions