BGP-联邦和PR
BGP 联邦和路由反射器
资料来源:
https://www.bilibili.com/video/av38160343
http://ccietea.com/Folder_TechNotes/BGP.pdf更新
1
2020.11.22 初始
导语
bgp 系列第三篇,后面又又又来活了…
联邦和PR
因为 IBGP 的水平分割,导致 ebgp 的路由信息可能到不了一些 as 内部非边界 bgp 路由.
有 3 种解决
- 组 bgp mesh,消耗资源大.
- BGP 路由反射器
- BGP 联邦
BGP 路由反射器
路由反射器(route reflector,RR) 可用将自 ibgp 对等体学到的路由反射出去,规避上面的问题.
反射的规则非常严格,不然容易造成自环.
配置一台路由是 rr 的同时,还需要指定 client.client 本身无需任何配置.
反射规则: 反射和发送不同,反射还得加点料.
- 路由来自非 client ibgp 对等体,反射给所有 client
- 路由学习自 client 反射给所有非 client 和除此路由器外的所有 client,简而言之路由来自一个 client,反射给其他所有 ibgp 对等体
- 路由学习自 ebgp 对等体,发送给所有 ibgp 对等体.
防止自环
感觉像是把 ibgp / ebgp 那一套路由的层级应用在了 as 内部.
上文提到的反射的动作,会在常规的 bgp 路由通告基础上,加上 originator_id
和 cluster_list
防止路由环路.
originator_id
,类似 as 号,唯一标识一个路由反射簇(rr + client),cluster_list 类似 as_path.两者都是可选非传递属性.
originator_id
- 32 比特,进行反射时会添加该属性.
- 路由是 as 内始发,
originator_id
是 bgp 路由宣告者的 route-id - 路由非 as 内始发,会将
originator_id
设置为传入该 bgp 路由的边界路由器的 route-id
- 路由是 as 内始发,
- as 内存在多个 rr,
originator_id
由第一个 rr 创建,后续不会被修改. - 当 bgp 收到一条
originator_id
和自身 route-id 相同的路由时,会直接丢弃. originator_id
和cluster_list
会影响 bgp 路径决策(更像 ebgp/ibgp 了).
路由反射簇
路由反射簇包括 rr 和 client,一个 as 可用有多个反射簇.
每个反射簇都有一个唯一簇 id,默认是 bgp 的 route-id.
每次进行路由反射,折腾路由的 cluster_list 会写入反射簇的 id.
rr 收到 cluster_list 带有自身簇 id 时,认为存在环路,忽略此路由.
影响路由优选
- cluster_list 最短
- Originator_ID 最小(优先级低)
BGP 路由反射器部署
反射簇 id 实际上都可用修改.
路由反射器将 as 分割成小单元,放射状,rr + client,clent 不需要配置,反射簇可嵌套.
IBGP session原则
- AS 内的路由反射器之间要求全 IBGP 互联
- 路由反射簇中的所有 client 都应该与并且只与簇中所有的 RR 建立 IBGP 连接
- 非反射器的路由器即可参与 IBGP 全互联也可配置为反射器的 client
BGP 联邦
在 as 内划定联邦,一个联邦会分配成员 as 号.
两个联邦之间的 bgp 路由可以算是 联邦ebgp 对等体. ibgp 对等体 -> 联邦 ebgp 对等体.
几点注意
- 创建联邦后,原有 ibgp 对等关系发生变化
- 创建联邦内 bgp 路由规则时,as 号使用的是联邦的成员 as 号
- 联邦外部,不会获知联邦内情况
联邦 bgp 路径属性
通告给联邦的 bgp 路由
- next_hop 默认不变
- MED 默认不变
- Local_preference 默认不变(在联邦之间可以传递)
bgp 路由在联邦内传递时,as_path 会使用 type 3 4类型,不会被公布到联邦外,外界不可知.
联邦成员 as 号用于联邦内部避免自环,不参加 as_path 的长度计算.
BGP 联邦的配置
结语
又又又来活了…绝赞拖更中…