4242421117

YUYUKO-IX

基于 ZeroTier 的 P2P L2 互联网络

🌐

全球路由交换

所有参与者连接到 Route Server 上交换路由信息,您只需要连接 RS,即可和所有参与者建立 Peer,无需额外维护每个参与者。RS 可能不在您路由器所在的区域,但请放心,您到 RS 的延迟不会影响您在 IX 上的实际延迟。

🛡️

广播风暴抑制

我们施加了额外的措施,尽量阻止超大型 ZeroTier 网络可能出现的广播风暴问题。

低带宽优化

推荐启用 ZeroTier 低带宽模式,减少控制平面开销。配合社区标记策略与地理位置过滤,构建高效稳定的路由拓扑。

⚠️ 重要注意事项

🚫
社区标记强制要求

所有人必须在自己的路由上使用 (4211179999, 64511, *) Route Origin 社区标记。任何不携带该标记的路由将被直接拒绝,无法进入 RS 路由表。标记的值取决于您路由器的物理位置,定义与 dn42 社区相同,详见 dn42 wiki

⚠️
路由策略提醒

特别留意自己的路由策略,不要发全表。

🚀 快速接入指南

  1. 安装 ZeroTier,执行以下命令:
    curl -s https://install.zerotier.com | sudo bash
  2. 安装完成后,加入网络并等待审批:
    zerotier-cli join 8d0a9150472a22f5
  3. 将您的 ZeroTier IDASN 发送至:
    您可以使用 zerotier-cli info 命令获取 ZeroTier ID。
    邮箱:
    dn42@yuyuko.com
    或通过 Telegram 频道: https://t.me/as4242421117
  4. 等待获批后,连接到 RS:
    fd8d:0a91:5047:2a22:f599:930e:5be1:1576
  5. 强烈推荐在您的导入过滤器上实施地理位置过滤,防止路由被发送到远距离的节点,优化网络性能。

ZeroTier

/var/lib/zerotier-one/local.conf
{
    "settings": {
        "interfacePrefixBlacklist": ["prefixA", "prefixB"],
        "lowBandwidthMode": true
    }
}

填写需要屏蔽的接口前缀,避免 ZeroTier 在这些接口上发送P2P流量。

Bird

/etc/bird/dn42_yuyuko_ix.conf
protocol bgp dn42_yuyuko_ix {
    local role rs_client;
    enable extended messages on;
    local as <your asn>;
    neighbor fd8d:0a91:5047:2a22:f599:930e:5be1:1576 as 4211179999;

    ipv4 {
        extended next hop on;
        add paths rx;
        import filter {
            # Accept only routes with the required origin large community
            if bgp_large_community ~ [(4211179999, 64511, ????)] then {
                <your filter function>
                # Strip the community to avoid leaking it to other peers
                bgp_large_community.delete([(4211179999, 64511, *)]);
                accept;
            }
            reject;
        };
        export filter {
            if <need export> then {
                <your filter function>
                # Tag route with the origin community matching your location
                bgp_large_community.add((4211179999, 64511, ????));
                accept;
            }
            reject;
        };
    };
    ipv6 {   
        add paths rx;
        import filter {
            # Accept only routes with the required origin large community
            if bgp_large_community ~ [(4211179999, 64511, ????)] then {
                <your filter function>
                # Strip the community to avoid leaking it to other peers
                bgp_large_community.delete([(4211179999, 64511, *)]);
                accept;
            }
            reject;
        };
        export filter {
            if <need export> then {
                <your filter function>
                # Tag route with the origin community matching your location
                bgp_large_community.add((4211179999, 64511, ????));
                accept;
            }
            reject;
        };
    };
}
💡
请将配置中的 your asn 替换为您的 AS 号码,need export 替换为您需要导出的网络前缀条件,your filter function 替换为您的自定义过滤函数,???? 替换为适当的社区值。