X 区的双出口选路与 PE 设备之间的 AB 平面选路

一、X 区双出口选路:

X 区有两台出口路由器:XCE1 和 XCE2,分别连接主干网 Z 区的 XPE1 和 XPE2,两台出口路由器下挂核心 Core,形成三角形拓扑,这 3 台设备之间用 IGP OSPF 互通,并由两台 CE 路由器下发默认路由, Core 会获取到两条出口等价路由。

终端上到核心以后,会通过 hash 或者策略确认通过哪台出口出去,如果一台 CE 挂掉,则 Core 上这条默认路由失效,终端流量到核心以后,会走另一台 CE 出口。这样通过路由形成了主备链路的切换。

如果 Core 上存在 VRF 实例,则实现原理相同。

二、X 区和 Z 区的 AB 双平面选路:

X 区两台出口路由器:X_Export1 和 X_Export2 做为 CE 端设备,分别与 Z 区 A、B 平面的两台 PE 设备实现连接,形成 口 字型拓扑,两台 PE 设备 之间分别连接,那么,如何让两台 CE 设备实现主路径走 A(Z_PE1),备路径走B(Z_PE2)呢?

我们在 PE 和 CE 之间分别建立 EBGP 邻居关系,PE 将 Z 区的 OA 路由传递过来,两台 CE 通过 EBGP 获取到 OA 路由后,为了让 Core 获取到外部 OA 路由,我们让 IGP 对 EBGP 进行了双向引入。这里有两个问题需要解决:

1、出口选路问题:

如何让一台 X 区的流量 优先走 A 平面出口,即优先走 PE1 呢?这里我们让 PE 在用 EBGP 传递 OA 路由时,用路由策略,增大 B 平面(PE2)的 med 值,如从10 改为14,这样在传递给 CE 时,CE 再引入到 OSPF,传递给 Core 时,Core 会收到一个走 CE1 cost 10、 CE2 cost 14 的两条路由,本来等价的两条路由,走 CE1 更优,CE1 再走 PE1,从而实现了 AB 平面选路!

如果,A 平面的 PE 或者其直连设备挂了的话,则 Core 不再收到 CE1 的路由,CE2 传来的路由会上浮到公共路由表内,转而走 CE2,即走 B 平面出口,实现了主备的快速切换!

在这里,Z 区是两个三角形的平面,为了让 B 平面完整地走完,不再 AB 交叉走,我们对两台 PE 设备之间的直连定义了 内部 cost 值如 4,Z 区绕行两个路由器会使两个内部 cost 值 等于14,大于直连的 cost 值 10,实现了走同平面的路径控制。

2. 由双点双向引入造成的问题:

出于 X/Z 通信的需要,我们需要让 X/Z 区业务路由互通:X 可以获取到 Z 区 10.3.101.254/24 的路由;让 Z 区获取到 X 区 10.1.0.3/32 的路由。这里,我们使用了双点双向引入:

  • 问题1:环路和次优路径问题:
    在 CE 上,当从 EBGP 引入到 IGP 前,EBGP 的路由优先级是 255,进入 OSPF 后,它变成了 ASE 外部路由,优先级为 150。因为 IGP 150 优于 EBGP 255,相同的路由,IGP 路由更优!本地的公共路由表会优选这条 ASE 路由,并将它在 OSPF 区域内泛洪,这时另一台 CE 和 Core 会同时收到,由于两台 CE 会同时引入外部路由,那么,两台 CE 都会认为,走 Z 区应该从对端走,从而形成路由环路。
    怎么解决这个问题呢?我们在 CE 和 PE 建立 EBGP 连接时,在 BGP 进程下,直接用** preference 120 255 255**,让 OSPF 在引入时,继承外部开销** default cost inherit**,直接让 EBGP 进入 OSPF 时,优先级高于OSPF ASE 路由,那么就避免了 CE 之间走环路和次优路径问题!
    问题2:虚假路由(重复引入)问题:
    除了 EBGP 在引入到 IGP时,配置更小的优先级之外,还有一种情况,就是重复引入,PE1/2 的路由是相同的,都在 CE 端被引入到 CE1/2 中,那么为了避免重复引入对端 CE 和 Core 用 IGP 传过来的路由,我们在 IGP 引入 EBGP 时,打上自己的 tag,同时做路由策略,让对端 CE 在做 EBGP 引入 IGP 路由时,不再重复引入带有对端 tag 的 EBGP 路由,从而避免环路。
    我们在两个 CE 上看:通往 Z 区 10.3.101.0/24 的路由就只有各自直连 PE 传过来的一条路由了,但到 Core 上看,Core 会有两条 CE 各自传过来的路由了,结合问题 1 的处理,Core 上的两条路由,会通过 CE1 走主路径 A 平面

    CE1/2:
    ospf 1 rou 10.1.0.1
    default cost inherit
    import bgp tag 10
    a 0
    n 10.1.0.0 0.0.255.255

    route-policy o2b deny node 10
    if-match tag 20
    route-policy o2b p node 20

    bgp 65001
    router-id 65001:1
    preference 120 255 255
    import ospf 1 route-policy o2b
    peer 10.20.1.2 as 65000

三、回包 AB 平面选路问题:

我们的 X 区的流量到了 ZPE,ZPE 回包时,发现它收到了 XPE1、XPE2 的两条等价路由,它会通过 hash 选择一条路径回包,这样就造成了来回路由不一致,即 AB 平面互跳问题,怎么解决这个问题呢?我们让 XPE1/2 在 IBGP 传递 X 区路由时,手动调大 XPE2 的 med 值为 12,让 ZPE 优选 XPE1 的默认 med 10 路由,让回包优先走 XPE1(A平面)

复制代码
XPE1/2:
route-policy med_internal permit node 10
apply cost internal
route-policy med12 permit node 10:
apply cost 12

四、踩坑总结:

  1. 在 XPE 向 ZPE 传递引入的路由时,需要配置 peer ZPE next-hop-local,否则路由到了 ZPE 上就会出现路由 imcomplete ?的错误信息;EBGP引入的路由,向IBGP传的时候,是imcomplete属性,需要在本端配peer ZPE next-hop-local,IBGP才会认为是优。同理,回包路由也需要配置,即 ZPE 向 XPE 传递时,也要对等地写上这条命令
  2. 在配置 route-policy o2b 的时候,不要只写拒绝对端 tag 的路由策略,还要加一条允许路由的策略,否则就无任何路由可以被引入到 EBGP 了
相关推荐
Hrain-AI5 小时前
多 Agent 并行不打架:worktree 隔离与反馈回流落地(附脚本)
网络·数据库·人工智能·架构
云运维笔记6 小时前
IP地址从入门到精通:网络通信的核心基石
运维·网络·计算机网络
Koi慢热6 小时前
DayDayMap学术社区体验:卫星网络测绘专题用下来怎么样
网络·人工智能·windows·web安全·网络安全
万联WANFLOW6 小时前
从“连接网络”到“编排业务”:企业网络架构正在发生什么变化?
网络·人工智能
kuroomi7 小时前
Ingress-Nginx与kubernetes 网络
linux·运维·网络·kubernetes
Yang96118 小时前
鼎讯101C测向天线200MHz至500MHz比幅测向解读
网络
yi碗汤园9 小时前
OSS对象存储服务
网络·阿里云
Doris__HE9 小时前
【元脑服务器NF5476G7-NF5476M7技术规格分享】
运维·服务器·网络·数据库·性能优化
boxiansheng16311 小时前
408计算机网络
网络·计算机网络·智能路由器
闲云野鹤在人间12 小时前
docker 入门 | 第5章 网络详解
网络·docker·架构·华为云·php