网络路由拓扑图的图形优化

最近在改善 DN11 的网络拓扑前端展示效果,在图结构上做了不小的调整,记录一下。 边中心度 上面展示的是我的 OSPF 网络拓扑,可以在 https://status.dn11.top/#/ospf/4220084444 看到实时的图像。 除了你见过的所有的 OSPF 拓扑图都会展示的 cost 和 routerId 一类的基本结构,你会很容易地注意到:这里的每一个边都有宽度。这就是边中心度在图中的展示方式。 边中心度这个概念简单来说就是通过某条边的最短路径的数量再做一点归一化,归一化前的边 $e$ 的中心度可以用这个公式表示: $$ c(e) = \sum_{s, t \in V} \frac{\sigma(s, t | e)}{\sigma(s, t)} $$ 摘自 networkX 需要注意的是不同于 networkX 的表述,本文的“边”均为有向边 $V$ 所有节点的集合,$\sigma(s, t)$ 是 $(s 到 t)$ 间最短路径的数量,$\sigma(s, t | e)$ 是其中经过有向边 $e$ 的最短路径的数量。 具体的公式相比前面的描述而言将 ECMP 路由纳入了考虑,将权重分给了 ECMP 路由。 归一化 为了在节点数量变化的情况下持续评估边中心度,我给边中心度做了一次归一化,简单来说就是除以当前节点数量 $n$ 下可以达到的边中心度的最大值。 $$ c_{max}(n) = \begin{cases} 0& n<2 \ (n-1)(n-2)+1 &n>=2 \end{cases} $$ ...

February 19, 2026 · 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