BGP Player日常玩耍之重建网络-ISIS/MPLS/BGP/BFD/VXLAN/WireGuard/VRF

微信扫一扫,分享到朋友圈

BGP Player日常玩耍之重建网络-ISIS/MPLS/BGP/BFD/VXLAN/WireGuard/VRF
0

在四年前,咱在博客写了:

在以前从最开始的 ZeroTier组网变成GRE组网到现在已经很久没有更新,因为如下原因

咱的ASN变化了,所以咱需要更新网络的配置,正如此,不然给网络做一次大变更

设计计划

网络连接

咱目前的计划是同地区,例如都是东京的机器,则使用VXLAN组网,跨地区则使用Wireguard进行连接,同一云运营商的则直接使用VMBR或云服务商的内网

因为是Linux Only的VXLAN组网,所以组网,组起来和以前用GRE起Tunnel基本一样,没什么复杂的

配置前

机器环境

咱的机器环境基本都如下

Debian9 10 11 12 / Ubuntu 18.04 20.04 22.04 + FRRouting 7/8/9

国内机器预配置(禁用IPV6优先,默认IPV4优先)

国内机器要不就是没V6,要不就是云服务商高价提供,所以国内机器咱需要优先使用V4

sed -i "s/#\?precedence ::ffff:0:0\/96 100/precedence ::ffff:0:0\/96 100/" /etc/gai.conf

边缘节点FRRouting更新最新 9

在配置的时候发现,FRRouting9 发布了,看了下版本更新内容:(原文)

Memory footprint for BGP reduced drastically!
In FRR 8.4 release, we shipped Extended Message Support for BGP, which increased the memory usage significantly. In FRR 9.0 release, the memory footprint is back to normal again. We removed the unused structure fields that consumed a huge amount of memory unnecessarily.

Other significant changes

  • Introduce mgmtd daemon link
  • Add BGP neighbor path-attribute treat-as-withdraw command link
  • Add BGP ASN dot notation support (RFC 5396) link
  • Add BGP Software Version capability (draft-abraitis-bgp-version-capability) link
  • Allow BGP peering via 127.0.0.0/8 link
  • Deprecate BGP internet community – this is the Cisco-specific community, which is never been RFC-defined and confusing
  • Implement match source-protocol for BGP route maps link
  • Implement BGP Node Target extended communities (draft-ietf-idr-node-target-ext-comm) link
  • Implement Flex-Algo for SR-MPLS (RFC 9350) link
  • Add support for IS-IS advertise-passive-only link
  • Add IS-IS affinity-map support link
  • Add the graceful-restart hello-delay OSPFv2/OSPFv3 command linklink
  • Add the ipv6 mld join PIMv6 command link
  • Add allow-ecmp x RIP/RIPng command linklink
  • Add BFD support for RIP

主要内容看重的内容就是

BGP 的内存占用量大幅减少!
在 FRR 8.4 版本中,我们提供了对 BGP 的扩展消息支持,这显着增加了内存使用量。 在 FRR 9.0 版本中,内存占用再次恢复正常。 我们删除了未使用的结构字段,这些字段不必要地消耗了大量内存。

BGP 和其他协议的内存泄漏修复。

更新操作就非常简单了,直接apt更新就好了

apt update -y && apt upgrade -y

BGP 路由器实现配置-自动过滤器生成 (使用BGPQ4 根据AS-SET生成)

apt install libtool autoconf g++
wget https://github.com/bgp/bgpq4/archive/refs/tags/1.9.tar.gz 
tar -xzvf 1.9.tar.gz
./bootstrap
./configure
make
make install

Linux机器启用MPLS

检测有没有加载内核模块。 lsmod | grep mpls 

mpls_iptunnel          16384  0
mpls_gso               16384  0
mpls_router            28672  1 mpls_iptunnel
ip_tunnel              24576  1 mpls_router

如果没有的话则需要加载内核模块

将这 3 个内核模块附加到 /etc/modules-load.d/modules.conf 配置文件中。

mpls_router
mpls_gso
mpls_iptunnel

为 FRR 设备中接口激活 MPLS,并将最大可用平台 MPLS 标签设置为 1048575。

#临时使用
sysctl -w net.mpls.conf.接口名称.input=1

sysctl -w net.mpls.conf.eth0.input=1
sysctl -w net.mpls.conf.eth1.input=1

sysctl -w net.mpls.conf.lo.input=1
sysctl -w net.mpls.platform_labels=1048575


#写入配置文件
/etc/sysctl.d/91-mpls.conf

net.mpls.conf.lo.input=1
net.mpls.conf.eth0.input=1
net.mpls.conf.eth1.input=1

net.mpls.platform_labels=1048575

参考文章:https://www.uni-koeln.de/~pbogusze/posts/FRRouting_SR_Segment_Routing_tech_demo.html

Linux下启用VRF

咱对有IXP访问,和部分可以开VM但同时通过Tunnel获得BGP的放在了几个不同的VRF里面

#IXP VRF

#针对IXP的,机器里有IXP网卡的
ip link add IXP type vrf table 200
ip link set dev IXP up
ip route add table 200 unreachable default metric 4278198272
ip link set dev eth1 master IXP

#针对上游 或者 Tunnel接的上游
ip link add IPT type vrf table 300
ip link set dev IPT up
ip route add table 300 unreachable default metric 4278198272
ip link set dev vxlan-01 master IPT

#针对PVE里面的VM或以后的客户
ip link add Cust type vrf table 400
ip link set dev Cust up
ip route add table 400 unreachable default metric 4278198272
ip link set dev vmbr200 master Cust

IP分配

没钱为各个节点分配公网IPv4,所以咱计划给每个节点使用内网IPv4 + 公网IPv6。但是因为咱打算连通DN42,所以内网选择网段就避开了 172.20. 0.0/14 / fd00::/8

最终咱选中的分配网段规则如下(咱的规则)

在10.233.0.0/16 下分配Lo口地址 (全是/32)

在10.230.0.0/16 下分配互联地址(全是/31)

全部都会被分配IPV6,但IPV6将是公网地址。无论Lo还是互联地址都将以 /64 的形式分配。(不是/128和/127)

ISIS区域ID命名

咱的规则如下

39.[ISO3166].[NET].[NET].[ID].00

例如 39.0840.0102.3384.0XXX.00

代表的是 39 固定前缀 , 0840 代表美国地区(ISO3166) ,0102.3384.0 代表 10.233.84.0/24(同Lo口地址) ,XXX代表编号

路由配置

因为设备不少,这就选基本的配置出来展示,整个网络基本都是在这复制出来的

接口配置

#案例

interface dummy0

ip router isis ISIF:DE:L2

ipv6 router isis ISIF:DE:L2

isis circuit-type level-2-only

exit

interface vxlan-fr-root-2

ip router isis ISIF:DE:L2

ipv6 router isis ISIF:DE:L2

isis bfd

isis circuit-type level-2-only

isis network point-to-point

mpls enable

exit

#模板

interface dummy0

ip router isis [ISISNAME]

ipv6 router isis [ISISNAME]

isis circuit-type level-2-only

exit

interface [Interface]

ip router isis [ISISNAME]

ipv6 router isis [ISISNAME]

isis bfd

isis circuit-type level-2-only

isis network point-to-point

mpls enable

exit

ISIS配置

#案例

router isis ISIF:DE

is-type level-2-only

net 39.0276.0102.3349.0002.00

exit


#模板

router isis [NAME]

is-type level-2-only

net ID

exit

MPLS LDP配置

确保需要使用的每个接口都 mpls enable了

然后

mpls ldp

router-id 10.233.49.2

!

address-family ipv4

discovery transport-address 10.233.49.2

!

interface vxlan-fr-root-2

exit

!

exit-address-family

!

address-family ipv6

discovery transport-address XXX:XXXXX849:2::1

!

interface vxlan-fr-root-2

exit

!

exit-address-family

!

exit

BFD配置

BFD在网内没有特别的配置,也没更改参数,都是直接在接口下启用 isis bfd 即可自动完成配置

参考

咱很菜的,是个智障。 人设非常容易崩。
上一篇

【笔记】acme.sh(CF)/drone/宝塔面板部署VUE(404问题)/ Laravel扩展包本地加载Compoer.json/Linux VRF

下一篇

国内三网出口分流-GoBGP+FRRouting+BGPQ4

你也可能喜欢

发表评论

您的电子邮件地址不会被公开。 必填项已用 * 标注

提示:点击验证后方可评论!

插入图片

排行榜

    抱歉,30天内未发布文章!
返回顶部