DN11 毕业季 —— BGP Large Comunnity 与 DN11 选路设计

前言 又是一年毕业季,但是今年我毕业,当然也有 DN11 最大的一批的小伙伴们。这一来大家各奔东西,我完全可以想象出大伙零零散散地分布在各个城市的情景。这对 DN11 而言其实是一个重大的挑战 —— 选路不能乱选了,尤其是那些中心度较高的或者节点跨地区的自治域。具体数值可以在 https://fc.baimeow.cn/fc/rank11 。 这一次,一如既往地,我会尽力给大家带来一套实践可用选路方案,但这次涉及到的一些实际问题资料少之又少,就比如其实 dn42 不在乎选路,选路这事情只有互联网上才有充足的实践。总的来说这一次会比以往任何一次都要难一些,如果有疏漏也请谅解。 前置知识 BGP 选路优先级 我们以 BIRD2 为例,实际上不同路由软硬件实现略有区别,实践上还是要因地制宜一下。 Prefer route with the highest Local Preference attribute. Local Preference 是优先级最高的一条了,需要手动在filter里设置,默认值为100,我们后续主要会通过修改 local_pref 实现选路。 Prefer route with the shortest AS path. 最短 AS Path 老生常谈了 Prefer IGP origin over EGP and EGP origin over incomplete. 还请你忘了这条,DN11 一眼望过去全都是 IGP,在 BIRD2 里通过 static protocol 声明再导入到 BGP 表的 route 似乎确实全部被标记为 IGP,我还想着 incomplete 的事情,BIRD2 并不觉得他 incomplete。 Prefer the lowest value of the Multiple Exit Discriminator. 简称 MED,看起来是自己的 AS 内一个节点 peer 了对方两个的时候可以选选,感觉用途比较狭窄 ...

June 23, 2025 · BaiMeow

IBGP FullMesh 实现多节点自治域

最近不少群友有把自己的其他服务器也接入自己的 AS 的需求,那这篇教程也是时候该出了。 总览 这个事情比较复杂,我们先不急着开始配,先了解一下我们需要一个什么效果。 DN11 作为一个发展了有一段时间的实验性网络,我们目前有很大一批人,他们手上都已经有了一个节点,并且在这个节点上配置了 BGP 从而联通到其他节点。那这个情景下,他们的自治域就是由那一个节点组成的单节点自治域。我们现在需要添加一个新的节点到这个自治域,我们需要解决两个问题。 这两个节点之间需要组网 需要把某一个节点获取到的 BGP 路由与其他节点做一个同步 这两件事情我们分别将通过 OSPF 和 IBGP 实现。OSPF 是 DN11 的老东西,从使用者的角度看,就一个通过获取全局拓扑计算最短路的路由协议。IBGP 是 BGP 的一种,BGP 协议分为两种 EBGP 和 IBGP, 他们分别用于将 BGP 路由发给其他 AS 和将 BGP 路由同步到自己 AS 的其他节点。 IBGP 需要配置 fullmesh,这是由他的设计决定的,IBGP 只会把自己收到的 EBGP 路由转发给自己的邻居,对于自己收到的 IBGP 路由他并不会做一个转发,这主要是为了防止产生环。这其实无所谓,节点多了我们可以用 rr 反射器甚至多级 rr,还可以玩联邦,这个日后再说。下面将以双节点为例,配置一个多节点的 AS。 入口文件 由于这次的配置文件比较长,我们会把他切分到各个文件中,所以先介绍一下入口文件bird.conf的配置 log syslog all; debug protocols all; router id 172.16.4.6; protocol device{ } protocol kernel{ ipv4 { import none; export all; }; } ipv4 table OSPF_table; ipv4 table BGP_table; include "/etc/bird/ospf.conf"; include "/etc/bird/bgp.conf"; include "/etc/bird/ibgp.conf"; protocol pipe pipe_ospf_table{ table master4; peer table OSPF_table; import filter { krt_prefsrc=172.16.4.6; accept; }; export none; } protocol pipe pipe_bgp_table { table master4; peer table BGP_table; import filter { if source != RTS_BGP then reject; krt_prefsrc=172.16.4.6; accept; }; export none; } 我们很容易会发现,入口文件这里使用了三个include关键字,我们在这个入口文件里分别引用了三个文件,后续我们的 OSPF IBGP 和 EBGP 的实际逻辑都会在里面去实现。 ...

September 23, 2023 · BaiMeow

BGP 组网,DN11 与 VidarNetwork 的并网试验

DN11 是受 DN42 启发而搭建的一个实验性网络,目前用于杭电范围内,对网络感兴趣的同学学习使用,DN11和DN42非常相似,他们之间的经验都有广泛借鉴意义。 DN11配网第二期,接上文 “使用 Bird2 配置 WireGuard + OSPF 实现网络的高可用”,这是一篇用于 DN11 的 BGP 配置教程 随着 DN11 的扩大,使用 OSPF 进行集中管理已经变得麻烦起来了,此外还能看到一堆隧道IP污染路由表 也有不少人手上有多个内网,不得不打破 DN11 原先一个人使用一个/24网段的约定 近期又在考虑和 VidarNetwork 并网的事情,最终合并完的网络会变得相当庞大,或许是时候转移到BGP上去了 准备 选择一个AS Number BGP 是用于连接不同 AS 的路由协议,现在定义每一个人选取自己的AS号管理自己的AS。对于已经有AS号的,可以使用已有的AS号,没有AS号的建议选择 421111xxxx 并登记进文档。 选择自己的网段 首先,不要一次性宣告大于/24的网段,/24已经很够你折腾,如果你有多个路由设备并且确实有多个真实子网,那么你可以宣告两个或者三个/24的网段。 也不要为了省网段资源而采用/25这种做法,没有必要,只会给你带来更多的麻烦。 如果你是新加入DN11的成员,虽然DN11改为BGP的同时我们放开了网段的限制,但是真别用常见网段 172.16.x.0/24 (这是DN11之前使用的网段,.17 .18这些段docker会用,不要宣告) 10.x.x.0/24 (注意避开移动的内网段,不要使用太高或者太低的地址) 11.x.x.0/24 (美国国防部的公网段其中之一,他们一般当内网段用) 100.64.x.0/24 (比较少见的保留段) 192.168.x.0 (真的很容易冲突,不要用) 此外你还需要避开HDU已经使用了的内网段,具体有哪些段可以在飞书知识库上查找 隧道 本小节写给 Openwrt 用户,ros 用户应该都会,linux 用户参考 wg-quick 使用教程。但无论你是什么用户,请务必看完本章节的内容,铺设隧道这件事有一些实践上的做法可供参考。 安装wg-quick-op 我给 openwrt 专门写了一个用来配置 wireguard 的工具,他会帮你处理开机启动,ddns 的问题的同时你可以使用 wg-quick 配置文件的所有配置。主要是基于 wg-quick-go 修改,定制了一些实用功能。 ...

June 1, 2023 · BaiMeow