BGP通告与属性
BGP 通告原则:
① 仅将自己最优的路由发布给邻居 (> 最优)
② 通过EBGP邻居获得的最优路由可以发布给所有的BGP邻居
③ 通过IBGP邻居获得的路由不会发布给IBGP邻居(防止IBGP路由环路)
④ BGP和IGP同步(华为默认关闭该特性)
⑤ 默认从EBGP邻居学到的BGP路由的下一跳是EBGP对等体的IP地址,当该路由向AS内部传递至时,路由传递给IBGP邻居时下一跳地址(next-hop)不变(还是上一个AS的接口地址),此时有可能会引发下一跳不可达
选路属性优先级
AS-path 200, origin igp, pref-val 0, valid, external, pre 255, not preferred for router ID
解决下一跳不可达:
a 将EBGP互联地址(next-hop地址)宣告进IGP(注意配置静默接口,防止IGP路由传至其他AS)
b 使用next-hop-local
next-hop-local 配置:
R3:
bgp 100
peer 10.1.4.4 next-hop-local
给邻居4.4 发送bgp 更新时将next-hop 改为自己(10.1.3.3)。
防止环路:
a 防止IBGP环路(AS内部环路):IBGP水平分割
b 防止EBGP环路(不同AS之间的环路):AS-Path 属性
解决IBGP水平分割带来的路由不传递问题:
a 在AS内部IBGP邻居建立全互联结构(full-mesh)
b 配置路由反射器RR
c BGP联邦 (联盟)
BGP路由黑洞:可以学习到路由,但是数据不可达
解决BGP路由黑洞:
方案①:将BGP路由引入到IGP里面(针对银行、集团单位),以实现BGP和IGP的同步。
方案②:所有路由器形成IBGP全互联结构(Full-mesh)。
开启BGP 负载分担:
bgp 200
maximum load-balancing 4
在bgp 路由表中无法看到现象,但是在IP 路由表中有体现!!
配置该命令可以使多条BGP等价路由形成负载分担,以达到均衡的目的,实现网络资源的合理利用。
配置该命令后,可以满足如下所有条件BGP路由会成为等价路由,形成负载分担:
原始下一跳不相同
首选值(prefval)相同
本地优先级(local_pref)相同
都是聚合路由或者都不是聚合路由
origin类型相同
MED值相同
都是EBGP或者IBGP
AS内部的metric相同
AS——Pash相同
bgp 路由表中 路由不被优化的原因:下一跳不可达
解决下一跳不可达:
a 将EBGP互联地址(next-hop地址)宣告进IGP(注意配置静默接口,防止IGP路由传至其他AS)
b 使用next-hop-local
BGP 属性分类:
公认必遵:origin(起源) 、AS-path、next-hop对端必须能够识别,且这些属性必须包含在update更新报文中
公认任意:Local_Pref (本地优先级)、Atomic Aggregate 原子聚合对端必须能够识别,但这些属性不一定会携带在update报文中
可选过渡:Aggregater 、communitybgp路由器不能识别该属性,但可以接收并将其传给邻居
可选非过渡:MEDBGP路由器可以忽略该属性并不向他的邻居发布
BGP路由器将路由通告给邻居后,每个BGP邻居都会进行路由优选路由选择的三种情况
该路由时到达目的地的唯一路由,直接优选
对到达同一目的地多条路由。优选优先级最高的
对到达同一目的地且具有相同优先级的多条路由,必须使用更细的原则去选择最优的
BGP 路由选路原则13条:
1 丢弃下一跳不可达的路由
2 优选Preference_Value值(首选值)最高的路由(私有,本地有效)
Preference_Value值(首选值):本地有效(不传给邻居),默认值0,越大越优先
3 优选本地优先级(Local_Pre)最高的路由
Local_preference 本地优先级:默认值 100 ,越大越优先,IBGP邻居之间有效,只能在本AS内传播
local_pre为空原因:(公认任意属性),由于Local_Pre属性仅在IBGP邻居之间有效,
因此从EBGP邻居收到的update报文不携带local_pre 值。因此从ebgp邻居收到的路由的local_pre 值是空。
4 优选手动聚合>自动聚合>network>import>从对等体学到
5 优选AS_Path短的路由
AS_Path :经过的AS越少越优先,可以用于IBGP和EBGP邻居
6 起源类型Original : I>E>?
起源类型Original : I>E>? ,公认必遵属性,该属性可以跨AS传递
7 对于来自同一AS的路由,优选MED值小的。**
MED:Multi-Exit-Discriminator 默认值是0 越小越优先 类似IGP度量值
该属性仅在相邻两个AS直间传递 用于判断流量进入AS时的最佳路由
注意:将igp引入bgp时 igp路由的开销会自动移植到MED。
MED值为空原因:(可选 非过渡属性),在向EBGP邻居发送update更新时默认不携带MED属性,
除非手动配置路由策略(route-policy)才会携带
8 优选从EBGP学来的路由(EBGP>IBGP)
9 优选AS内部IGP的Metric最小的路由(到达下一跳的IGP 开销)
----可以开启负载分担----(bgp路由表不体现 路由会显示)
10 优选Cluster_List (RR反射器:RR的router id)最短的路由(经过RR的数量少)
11 优选Orginator_ID (RR反射器:路由起源router id )最小的路由(路由进入某AS时,起始路由器router id)
12 优选Router_ID最小的路由器发布的路由
13 优选具有较小IP地址的邻居学来的路由
注意:当属性为空时可以看成该属性所对应的默认值。
BGP 路由聚合:
静态
R2:
ip route-s 10.2.0.0 16 null 0
bgp 200
network 10.2.0.0 16
自动聚合
注意:只对引入的路由做聚合。汇总成主类网络。
R2:
bgp 200
summary automatic
手动聚合 (重点)
bgp手动聚合放行明细路由原因:
原因A 放行明细并不是将所有的明细都放行 (只将bgp转发表里面有的 或者 suppress-policy 未匹配的 放行)
原因B 部分明细路由放行是为了区分业务 方便对端AS部署路由策略选路
例如:R2想将办公A和业务A明细放行,方便对端AS配置策略
R2:
bgp 200
aggregate 10.2.0.0 255.255.0.0 (默认放行BGP 路由表里面存在的所有明细路由)
或者aggregate 10.2.0.0 255.255.0.0 detail-suppressed 抑制所有明细
或者aggregate 10.2.0.0 255.255.0.0 detail-suppressed suppress-policy AA
ip ip-prefix BB permit 10.2.0.0 16 greater-equal 25 less-equal 32
route-policy AA permit node 10
if-match ip-prefix BB
将 /25 (互联)到 /32 路由抑制 将其他明细路由(例如:10.2.10.0/24 )传递过去
注意:聚合路由会丢失部分属性(例如:As-path、团体):因为明细路由来自多个AS,
且明细路由的属性值不一致,将多条明细路由汇总成一条时 容易丢失部分属性。
R4:首先在R4上面配置loopback接口 10.2.66.x 并引入bgp路由表(可以通过network)
R5:然后在R5上做聚合,将聚合后的路由发给R7
bgp 100
aggregate 10.2.0.0 255.255.0.0 as-set detail-suppressed
查看结果:
注意:大括号里面的AS是无序的即AS-set (AS集),大括号之外的AS编号是有序的(AS_Sequence)普通常见的AS-path都是有序的。
原子聚合属性:
atomic-aggregate ,在聚合路由时 携带details-suppress 参数(没有携带suppress-policy),聚合后的路由会携带该属性,用于警告下游路由器出现信息丢失(防环)。
Aggregator 属性:在聚合路由时,聚合后的路由会携带
aggregator属性表明聚合发生的位置(防环),该属性包含发起聚合路由器的AS号和router id。聚合路由时携带AS-path(as-set)的优缺点:
优点:避免环路风险
缺点:明细路由震荡,有可能会导致聚合路由的频繁刷新(例如as-path频繁刷新),影响网络的稳定性。
团体属性:
community (辅助选路、过滤路由)
作用:标识具有相同特征的bgp路由 类似tag功能(和前缀列表功能相似)
自定义团体属性 (私有)例如:100:1
公共团体属性 (公有)
NO_advertise 不传递给任何邻居
NO_export 不传递给EBGP邻居