基于 ZeroTier 的 P2P L2 互联网络
所有参与者连接到 Route Server 上交换路由信息,您只需要连接 RS,即可和所有参与者建立 Peer,无需额外维护每个参与者。RS 可能不在您路由器所在的区域,但请放心,您到 RS 的延迟不会影响您在 IX 上的实际延迟。
我们施加了额外的措施,尽量阻止超大型 ZeroTier 网络可能出现的广播风暴问题。
推荐启用 ZeroTier 低带宽模式,减少控制平面开销。配合社区标记策略与地理位置过滤,构建高效稳定的路由拓扑。
您可以通过 Looking Glass 查看网络状态和路由信息:
https://lg-ix-dn42.yuyuko.com/特别留意自己的路由策略,不要发全表。
我们的 Route Server 使用的大型社区方案兼容 IXPM 的实现,您可以使用下列社区值控制路由策略。我们默认会透传 RFC1997 well-known communities。
| 描述 | 大型社区 |
|---|---|
| 阻止向特定节点通告某条路由 | (4211179999, 0, peer-as) |
| 向特定节点通告某条路由 | (4211179999, 1, peer-as) |
| 阻止向所有节点通告某条路由 | (4211179999, 0, 0) |
| 向所有节点通告某条路由 | (4211179999, 1, 0) |
| 向特定节点通告时预置一次 AS Path | (4211179999, 101, peer-as) |
| 向特定节点通告时预置两次 AS Path | (4211179999, 102, peer-as) |
| 向特定节点通告时预置三次 AS Path | (4211179999, 103, peer-as) |
curl -s https://install.zerotier.com | sudo bash
zerotier-cli join 8d0a9150472a22f5 (香港 - hk)zerotier-cli join 8d0a915047db4ea2 (美国西部 - usw)zerotier-cli join 8d0a915047d7beab (日本 - jp)zerotier-cli join 8d0a91504793aee4 (德国 - de)zerotier-cli join 8d0a915047193e52 (法国 - fr)zerotier-cli join 8d0a9150478bc8fc (波兰 - pl)
zerotier-cli info 获取您的 ZeroTier ID,然后将 ZeroTier ID 和 ASN 发送至邮箱:
fd8d:0a91:5047:2a22:f599:930e:5be1:1576 (香港 - hk)fd8d:0a91:5047:db4e:a299:936a:f897:aebf (美国西部 - usw)fd8d:0a91:5047:d7be:ab99:931b:6098:d0c6 (日本 - jp)fd8d:0a91:5047:93ae:e499:9315:ea79:1f8a (德国 - de)fd8d:0a91:5047:193e:5299:931a:e3a7:549a (法国 - fr)fd8d:0a91:5047:8bc8:fc99:93b6:04ad:adbf (波兰 - pl)
{
"settings": {
"interfacePrefixBlacklist": ["prefixA", "prefixB"],
"lowBandwidthMode": true
}
}
填写需要屏蔽的接口前缀,避免 ZeroTier 在这些接口上发送P2P流量。
protocol bgp dn42_yuyuko_ix {
local role rs_client;
enable extended messages on;
local as <your asn>;
neighbor <rs address> as 4211179999;
ipv4 {
extended next hop on;
add paths rx;
import filter {
if <need import> then {
<your filter function>
accept;
}
reject;
};
export filter {
if <need export> then {
<your filter function>
accept;
}
reject;
};
};
ipv6 {
add paths rx;
import filter {
if <need import> then {
<your filter function>
accept;
}
reject;
};
export filter {
if <need export> then {
<your filter function>
accept;
}
reject;
};
};
}
your asn 替换为您的 AS 号码,need export 替换为您需要导出的网络前缀条件,your filter function 替换为您的自定义过滤函数。