导图社区 BGP核心知识(HCIP-Datacom)
华为认证HCIP-Datacom-Core Technology V1.0学习笔记 包括内容:BGP基础、BGP路径属性与路由反射器、BGP路由优选、BGP EVPN基础
编辑于2022-07-21 18:07:10BGP核心知识
BGP 基础
概述
定义
边界网关协议BGP(Border Gateway Protocol)是一种实现自治系统AS(Autonomous System)之间的路由可达,并选择最佳路由的距离矢量路由协议
AS
同一个组织管理下,使用同一路由协议/选路策略的设备集合
为什么AS之间使用BGP
安全
不暴露AS内部拓扑信息。基于TCP可靠传输,不需要额外ACK报文确认
LSDB大小
触发式 + 增量更新,而不是周期性更新
AS号分类(IANA分配)
2字节AS
范围
1-65535,1和65535保留
分类
公有
1-64511
私有
64512-65534
表述形式
十进制整数
asplain方法
4字节AS
范围
1~(2^32-1),1和最后一个同样保留
分类
公有
1-4199999999
私有
42亿到最后
表述形式
点分(X.Y)
asdot+方式
两种AS号通过两个可选过渡属性兼容
AS4-Path-Asdot:X.Y
携带原本AS号的属性(存在可选项中)
AS4-Path-Aggregate:23456
AS号是4字节时,open报文中AS号使用过渡AS号23456 如果识别看可选项还原,不识别就使用23456
两个属性都发给邻居
表述形式
asdot(兼容)
2字节就用asplain方法,4字节用asdot方式
发展
EGP→BGP分类
BGP-(1-4)
单播IPv4
默认
MP-BGP(多协议-BGP4的拓展)
BGP4+
IPv6单播
MBGP
IPv4组播
BGP-VPNv4/6
BGP特点
和IGP对比 (BGP里边的IGP包含静态路由)
BGP使用TCP作为其传输层协议(端口号为179),BGP路由器只发送增量的BGP路由更新,或进行触发式更新(不会周期性更新)。
BGP能够承载大批量的路由信息,能够支撑大规模网络。
BGP提供了丰富的路由策略,能够灵活的进行路由选路,并能指导对等体按策略发布路由。 每条BGP路由都携带多种路径属性(Path attribute),BGP可以通过这些路径属性控制路径选择,而不像IS-IS、IGP只能通过度量值控制路径选择,因此在路径选择上,BGP具有丰富的可操作性。
与OSPF、IS-IS等协议不同,BGP的会话是基于TCP建立的。建立BGP对等体关系的两台路由器并不要求必须直连
应用层协议,一种增强的距离矢量路由协议
BGP能够支撑MPLS/VPN的应用,传递客户VPN路由。
BGP提供了路由聚合和路由衰减功能用于防止路由振荡,通过这两项功能有效地提高了网络稳定性。
基本术语
角色
BGP Speaker
BGP发言者:运行BGP的路由器
Peer
对等体:BGP的邻居
BGP对等体之间交换BGP路由表
对等体关系
IBGP
同一AS内部
EBGP
不同AS之间
Router ID
选举类似OSPF中的Router-ID,包括非抢占
对等体关系建立 (两个路由可达的路由器之间可以建立多个邻居关系)
BGP建立对等体的对等体都会发起TCP三次握手,所以会建立两个TCP连接,但是实际BGP只会保留其中一个TCP连接,比较从Open报文中获取的对端的Router-ID,Router ID小的一端关闭TCP连接
三次握手建立完成之后,R1、R2之间相互发送Open报文,携带参数用于对等体建立
Open报文中携带
My Autonomous System:自身AS号
Hold Time:用于协商后续Keepalive报文发送时间
BGP Identifier:自身Router ID
参数协商正常之后双方相互发送Keepalive报文,收到对端发送的Keepalive报文之后对等体建立成功,同时双方周期发送Keepalive报文用于检测TCP连接连通性。
对等体关系建立之后,BGP路由器发送BGP Update(更新)报文通告路由到对等体
TCP更新源地址
缺省情况下,BGP使用报文出接口作为TCP连接的本地接口,当使用LoopBack口建立邻居关系时,需要指定源地址connect-interface
AS内使用物理接口建立邻居,物理接口Down掉时邻居关系也无法建立,但可能存在多条路径做冗余,所以建议使用环回口建IBGP邻居。 AS之间用环回口建EBGP邻居时,当存在多条路径时(实际AS之间的链路是很少的且不会有IGP路由),不能感知直连,所以AS之间建议使用物理接口
发送给同AS(IBGP)的TTL为255,发送给不同的AS(EBGP)的TTL为1,所以EBGP使用LoopBack建立邻居时需要修改ebgp-max-hop 的值大于2,还需要注意TCP连通性和更新源地址
工作原理
5种报文
报文头(19字节~4096字节)
Marker(16Byte)
检查BGP对等体的同步信息是否完整,以及用于BGP验证的计算。不使用验证时全部比特填充1
Length(2Byte)
BGP消息总长度
Type (1Byte)
5种BGP消息类型
分类
Open
作用
协商BGP对等体参数(AS号、版本号、保持时间、R-ID及可选项中携带的支持的能力(4字节、路由刷新、多协议),建立对等体关系
报文
Version:版本号,对于BGP 4来说,其值为4
My AS(autonomous system):本地AS号
Hold Time:保持时间。两端Hold Time通过协商保持一致 如果在这个时间内未收到对端发来的Keepalive报文或Update报文,则认为BGP连接中断
BGP Identifier:Router-ID
可选项(TLV格式-主要携带一些能力的信息)
T=1支持MP的能力
常见V值(AFI+SAFI)
AFI(地址族ID)
1
IPv4
2
IPv6
SAFI(子地址族ID)
1
单播
2
组播
128
VPNv4
T=2路由刷新能力
refresh
软启动
邻居关系会Down
关闭:undo peer x.x.x.x capability-advertise route-refresh
reset
硬启动至少32s建立邻居
4字节AS的支持能力
关闭:undo peer x.x.x.x capability-advertise 4-byte-as
Update
作用
发布可达路由的属性和路由
具有相同属性的路由用同一个Update报文发送
撤销不可达路由
报文
Unfeasible routes length(2Byte)
标明Withdrawn Routes部分的长度
Withdrawn routes(NByte)
包含要撤销的不可达路由列表
Total path attribute length(2Byte)
标明Path Attributes的长度
Path attributes(NByte)
包含要更新的路由属性
变长的TLV结构
Type
1字节Flag
O
0
公认
1
可选
T
0
非传递
1
可传递
P
属性的局部性,类似O和T位的校验
E
0
无需扩展
1
扩展
U
保留
1字节Type Code
具体属性的类型号
Length
Value
不同属性的属性值
NLRI(NByte)
包含可达路由的前缀列表
Notification
作用
BGP差错检测机制,报告错误信息,中止对等体关系
任何状态收到Notification报文,直接进入Idle状态
报文
错误码
错误字码
错误数据
具体查看错误码表
Keepalive
作用
标志对等体建立,维持BGP对等体关系,周期性交换报文,用于判断对等体之间的TCP连通性。
报文
只有报文头,所以是BGP最小的消息长度19字节
配置
peer x.x.x.x timer keepalive 0~21845 hold 0,3~65535
默认保活时间(hold-time)180s是存活时间(keeplive)的60s的3倍
同时为0不检测链路故障
时间配置过大和过小的优缺点和OSPF一样
Open报文协商时
hold-time取两端较小的时间
keeplive取协商的hold-time/3和本地keeplive比较后较小的时间
Route-refresh
作用
手动刷新
当路由策略发生变化时,触发请求对等体重新通告路由
Open报文协商时会协商是否支持Route-refresh
对于不支持Route-Refresh能力的BGP对等体,可以配置keep-all-routes命令,保留该对等体的所有原始路由
方向
export
主动发送Update
import
被动:收到refresh报文再Update
ORF
场景
本端设备希望BGP邻居只发送它需要的路由,而BGP邻居又不愿意针对不同设备维护不同的出口策略时
作用
避免了本端设备接收大量无用的路由 降低了本端设备的CPU使用率 有效减少了BGP邻居的配置工作 降低了链路带宽的占用率
配置
peer x.x.x.x capability-advertise orf ip-prefix both
6种状态
Idle -空闲
在Idle状态下,BGP拒绝邻居发送的连接请求。只有在收到本设备的Start事件后,BGP才开始尝试和其它BGP对等体进行TCP连接,并转至Connect状态。
Start事件(32s)是由一个操作者配置一个BGP过程
缺乏路由一般处于Idle状态
Connect -连接
在Connect状态下,BGP启动连接重传定时器冲(32s),主动建立邻居,然后等待BGP的对等体的回应TCP完成连接
TCP连接成功,进入OpenSent状态
TCP连接失败,进入Active
Active -活跃
选择
定时器超时前,等待对等体的响应
TCP连接成功,进入OpenSent状态
TCP连接失败,继续停留在Active
定时器超时后
回到Connect状态,继续尝试TCP连接
Active一般是用环回口建立邻居没有指定源地址
OpenSent-Open报文发送
OpenSent状态下,状态标志着TCP已经正常建立,等待对等体的Open报文,并对收到的Open报文中的AS号、版本号、认证等进行检查
选择
如果收到的Open报文正确,那么BGP发送Keepalive报文,并转至OpenConfirm状态。
如果发现收到的Open报文有错误,那么BGP发送Notification报文给对等体,并转至Idle状态。
OpenConfirm -Open报文已确认
在OpenConfirm状态下
收到Keepalive,进入Established状态
收到Notification,回到Idle状态
Established-连接已建立
在Established状态下,BGP可以和对等体交换Update、Keepalive、Route-refresh报文和Notification报文
选择
收到正确的Update或Keepalive报文、Route-refresh报文,将保持BGP连接。
收到错误的Update或Keepalive报文、TCP拆除连接、Notification,并转至Idle状态。
通常可见的3个状态是:Idle、Active和Established
5个路由交互原则
只发布最优且有效路由
增量更新路由
所有对等体发送的路由,BGP设备都会接收。
从EBGP对等体获得的路由,发布给它所有EBGP和IBGP对等体。
从IBGP对等体获得的路由,不会发布给其它IBGP对等体——IBGP水平分割(避免环路)
从IBGP获得的路由是否通告给它的EBGP对等体要依IGP和BGP同步的情况来决定 BGP同步规则指的是:一台路由器从自己的IBGP对等体学习到一条IBGP路由时,它将不能使用该条路由或把这条路由通告给自己的EBGP对等体,此时是一条无效的路由,除非它又从IGP协议也学习到这条路由,也就是要求IBGP路由与IGP路由同步(IGP路由表中包含所有BGP路由)。同步规则主要用于规避BGP路由黑洞问题 无效路由(下一跳不可达):能通过BGP学到但是在IGP里边没有的路由(我自己都到不了,我的其它BGP对等体的IGP路由肯定也到不了,肯定就不传了)
解决方法:在BGP中同步IGP路由,华为强制不允许同步,但是可以在IGP中引入BGP路由或者建立全互连的IBGP对等体
undo synchronization
默认关闭BGP和IGP的同步
表项
邻居表
影响邻居建立的因素
邻居地址的IGP路由是否可达
指定更新源地址
EBGP的TTL
Router-ID是否冲突
TCP179端口禁用
Open报文参数协商
AS号、版本号、认证参数、保持时间、R-ID及支持的能力
认证
停留在每个状态可能的原因
idle
Start事件:重传时间间隔
默认32s
[Huawei-bgp]timer connect-retry
peer地址不可达
connect
对方没有回复TCP响应
对端BGP没有启动,不监听TCP179
TCP报文过滤
链路故障
安全
认证
GTSM
非直连EBGP没有指多跳
active
TCP连接失败(有回应,但失败)
没有指peer
用loopback建立但没有指更新源
opensent
参数协商
AS号
不能配置错误
Router-ID
不能冲突
Option选项
支持MP的能力一致
邻居状态标识为No neg:表示地址族能力没有协商成功
opencomfirm
非直连建立EBGP到该状态检查TTL非1
路由表
路由表的生成
BGP本身并不会发现并计算产生路由
来源
network
network的路由必须是IP路由表能学到的路由,掩码也必须匹配
import-route
引入路由
两种注入的明细路由进行汇总形成聚合路由
BGP路由的下一跳指向建立邻居时用的地址,使用环回口建立时,需要路由迭代查找到可达的路由
BGP路由表处理流程
1、收到对等体路由信息
2、检查输入策略引擎
3、加入BGP路由表
将最优的路由加入全局IP路由表
4、检查输出策略引擎
5、发送对等体更新信息
BGP路由聚合
优点
减轻了设备的负担,隐藏了明细的路由信息,减少了路由震荡的影响
分类
自动聚合
[AR1-bgp]summary automatic
BGP的自动聚合功能仅对使用import-route方式引入BGP的路由有效 自动聚合后BGP产生的汇总路由为主类网络路由(不够精确),聚合后明细路由被抑制
手动聚合
配置
[RTA-bgp]aggregate 192.168.1.0 22
存在问题
聚合路由下的明细路由也会被通告
路由聚合后,丢失了明细路由的路径信息,EBGP对等体收到后还会通告给通告给它的EBGP对等体并被它接收,可能会有路由环路的隐患
优先级
手动聚合 > 自动聚合
可选项
detail-suppressed
抑制被聚合后的明细路由
抑制明细路由后生成的聚合路由丢失团体属性
as-set
路由聚合后,明细路由的AS_Path属性丢失,存在产生环路的风险,为此可以通过AS_SET类型的AS_Path属性携带所有明细路由中AS_Path属性携带的AS号防止环路。
配置了as-set参数,聚合路由会将明细路由的AS_Path信息用一个AS-Set集表示(放在花括号{ }里的AS号信息,该集合内的AS号没有先后顺序)
attribute-policy
修改聚合路由属性的策略,结合路由策略使用
origin-policy
指定明细路由与路由聚合强相关,当强相关明细路由失效时,路由聚合随之消失,结合路由策略使用
当和origin-policy detail-suppressed两者同时使用时只会抑制强相关的明细路由
suppress-policy(抑制策略)
有选择性地抑制明细路由,结合路由策略使用
聚合路由属性
路由聚合是会使用Aggregator属性和Autmic_Aggregator属性
明细路由Origin属性不相同
按照优先级igp > egp > incomplete
查看路由/属性
display bgp routing-table 10.1.1.1
路由状态
valid
可用
best
最优
select
可以加入IP路由表
active
已经加入IP路由表
display bgp routing-table peer 3.3.3.3
received-routes
从邻居接收到的路由信息
advertised-routes
发布给邻居的路由信息
accepted-routes
通过策略过滤的路由信息
display bgp routing-table community
显示携带指定团体属性的路由
whole-match
严格匹配团体属性
active-route-advertise
仅发布在IP路由表中被优选的路由
默认发布所有在BGP路由表中优选的路由给邻居
routing-table rib-only
禁止BGP路由下发到IP路由表
默认BGP优选的路由下发到IP路由表
路由状态
*
有效
>
最优
只将最优的路由传递给邻居
S
抑制
d
衰减
路由衰减
背景
BGP路由因为震荡频繁,所以使用路由衰减抑制不稳定的路由
原理
路由衰减使用惩罚值来衡量一条路由的稳定性,惩罚值越高说明路由越不稳定
路由每发生一次振荡,BGP便会给此路由增加1000的惩罚值,其余时间惩罚值会慢慢下降
当惩罚值超过抑制阈值时,此路由被抑制,不加入到路由表中,也不再向其他BGP对等体发布更新报文,减少对等体的路由计算从而减轻带宽和CPU资源的消耗
当惩罚值降到再使用阈值时才恢复
路由衰减只对EBGP路由起作用
路由震荡
peer x.x.x.x route-update-interval
配置发送路由更新的时间间隔,默认,IBGP对等体的路由更新时间间隔为15秒,EBGP对等体的路由更新时间间隔为30秒
i
内部
安全特性
BGP认证
MD5认证
通过TCP的可选项完成TCP连接的认证
peer x.x.x.x password
Keychain认证
不仅可以认证TCP连接,还可以认证BGP报文
BGP GTSM
背景
防止攻击者伪造BGP报文对设备进行攻击,可以通过配置GTSM功能检测IP报文头中的TTL值的范围来对设备进行保护
配置
peer x.x.x.x valid-ttl-hops 5
限制跳数
配置
基本配置
bgp 100 router-id x.x.x.x peer x.x.x.x as-number 200 peer x.x.x.x ebgp-max-hop 2 peer x.x.x.x connect-interface LoopBack0 network x.x.x.x 掩码
(可选)对等体组
group name external | internal
创建IBGP或EBGP对等体组
peer x.x.x.x group name
自动继承对等体组中最后一个对等体的配置,减少重复配置命令,对同一组的对等体修改策略时,可以直接使用对等体组
BGP路径属性与路由反射器
10+1个BGP路径属性
总分类
公认必遵属性:AS路径(AS_Path)、下一跳(Next_hop)、源头(Origin) 公认任意属性:本地优先级(Local_Pref)、原子聚合(Atomic_aggregate) 可选过渡属性:聚合者(Aggregator)、团体属性(Community) 可选非过渡属性:多出口鉴别器(MED,Multi-exit-discriminator)、起源ID(Originator_ID)、簇列表(Cluster_List)
作用
选路/防环
公认(所有路由器必须能够识别)
公认强制或公认必遵 (Well-known mandatory)
特点
必须包括在每个Update消息里,如果缺少这类属性,路由信息就会出错。
分类
起源 (Origin) 属性
标识了BGP路由的来源
路由标记
i—IGP(通过network命令注入BGP的路由)
e—EGP(EGP学习到的路由)
?—incomplete(通过import命令注入BGP的路由)
优先级:IGP>EGP>Incomplete
聚合路由
成员路由都是i→i
成员路由都是?→?
成员路由有i有?→?
AS路径(AS_Path)属性
矢量顺序记录了某条路由从本地到目的地址所要经过的所有AS编号
BGP在向IBGP对等体发送本地路由时,携带的AS_Path属性为空
BGP向IBGP对等体发布从EBGP对等体学来的路由时,携带的AS_Path属性不变
BGP在向EBGP对等体发布路由时,将本AS号添加到AS-Path最左边,依次排序,离本地AS越近的相邻AS号越排在前面
作用
防环
在接收路由时,如果发现AS_Path列表中有本AS号,则不接收该路由,从而避免了AS间的路由环路
场景?
Hub-Spoke环境中子公司之间必须通过总部同信,此时没有环路,但是返回时数据被丢弃,所以需要通过命令设置总部AS号出现的次数
选路
AS_Path短的优选
类型
As_Set
AS号的无序集合
包含在花括号{ }中,并且没有先后顺序,as-set避免了路由聚合产生的环路,因为路由聚合后AS_Path属性丢失
As_Sequence
AS号的有序集合
默认
As_Confed_Set
联盟中AS号的无序集合
As_Confed_Sequence
联盟中AS号的有序集合
联盟默认
AS_Path特性
peer x.x.x.x fake-as Y
伪AS号:一般设备只支持一个BGP进程,所以只能有一个AS号,但是在一些特殊情况下,需要保证网络的平滑切换,例如合并两个AS,就需要伪AS号替代原有AS号建立对等体关系
peer x.x.x.x public-as-only
删除私有AS号,私有AS号不能出现在公网上,否则会出现环路
as-path-limit
限制AS_Path属性中AS号最多的个数
默认最大个数255
peer x.x.x.x allow-as-loop
本地AS号重复的次数
修改/匹配AS_Path
使用路径过滤器匹配
peer直接引用
route-policy 引用后再使用peer调用route-policy
ip as-path-filter aa permit 正则表达式
修改方式
additive
追加
overwrite
重写
none overwrite
清空
下一跳 (Next_Hop) 属性
指定到达目标网络的下一跳地址
BGP也是一种逐跳路由协议。与IGP不同的是,BGP中的跳指的是自治系统,而不是路由器。因此下一跳是下一个自治系统。
属性值设置
E变I不变 E变:防止不可达 I不变:防止次优
默认情况,BGP发言者在向EBGP对等体发布路由时和向IBGP对等体发布引入的IGP路由时将下一跳改为自己的接口地址
BGP Speaker在向EBGP对等体发布路由或者将本地始发路由发布给IBGP对等体时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址(改变下一跳信息)。
peer x.x.x.x next-hop-invariable
对于引入的IGP路由且发往IBGP对等体时,不更改该IGP路由的下一跳地址;向EBGP对等体发布路由时不改变下一跳,默认都是要改变
默认情况,BGP在向EBGP对等体通告路由时,将下一跳属性设为自身的IP地址;在向IBGP对等体通告路由时,不改变下一跳属性
BGP Speaker在向IBGP对等体发布从EBGP对等体学来的路由时,并不改变该路由信息的下一跳属性(去往另一个AS出口最优的路径)
解决方法(使收到的下一跳可达)
可以配置路由到达下一跳不可达的地址(静态指向不可达的地址或者宣告AS之间的直连网段到OSPF)
使用路由策略修改下一跳
向IBGP对等体通告路由时,把下一跳属性设为建立IBGP对等体时的地址,一般边界路由器的IBGP对等体都要配置
peer { group-name | ipv4-address } next-hop-local
R1收到BGP路由的Next_Hop属性值与EBGP对等体(更新对象)同属一个网段,那么该条路由的Next_Hop地址将保持不变并传递给它的BGP对等体
类似ICMP重定向,避免次优
在注入的路由器上,使用network、import-route发布 BGP路由时,明细路由Next Hop显示0.0.0.0 在聚合的路由器上,使用路由聚合命令时,聚合路由Next Hop显示127.0.0.1
表示的都是本地路由
Next_Hop带来的问题
背景
比如只在一个运营商的PE设备之间通过IGP建立IBGP对等体,但是ISP内部的路由器没有此BGP路由
解决方法
使用MPLS建立隧道
内部路由器也运行BGP
重构拓扑,将边界路由器直连
BGP同步,不能同步引入
RR
联盟
公认自由决定或公认任意 (Well-known discretionary)
特点
不要求必须存在于Update报文中,即就算缺少这类属性,路由信息也不会出错。
分类
本地优先级属性 (Local-Preference)
表明路由器的BGP优先级,用于判断流量离开AS时的最佳路由,Local_Pref属性值越大越优,默认100(无论何种路由来源),范围0~2^32-1
仅在IBGP对等体之间有效(只发送给IBGP对等体),不通告给其他AS(EBGP对等体间收到此属性进行错误处理),所以在EBGP对等体的export方向做策略修改Local_Pref属性没有作用
I传E不传
配置
default local-preference 150
原子聚合(Atomic_Aggregate)
标识汇总路由的明细路由被抑制了
只有使用detail-suppressed抑制明细路由时才会携带该属性,抑制明细后,聚合路由丢失明细路由的团体属性,还有明细路由的属性不完全相同会影响聚合路由的属性。相当于一种预警标记,而并不承载任何信息,并使用聚合者属性提示“聚合点”及聚合设备所属的AS号。当路由器收到一条携带Atomic_Aggregate属性的路由时,它便知道该条路由可能出现了路径属性的丢失,此时把这条路由再通告给其他对等体时,需保留路由的Atomic_Aggregate属性
配置
修改默认值:bgp default local-preference
可选(不需要被所有路由器识别)
可选传递 (Optional transitive)
特点
BGP设备不识别此类属性依然会接受该类属性并通告给其他对等体。
分类
团体 (Community) 属性
一种路由标记(本质:Tag),用于简化路由策略的执行(为路由分配一个特定的Community属性值,之后就可以基于Community值而不是网络前缀/掩码信息来匹配路由执行策略了)
表示形式(4字节-0x00000000~0xFFFFFFFF)
十进制
AA:NN
AA表示AS号,NN是自定义的编号
分类
公认团体属性
Internet (0)
收到此属性的路由后,可以向任何BGP对等体发送该路由。默认,所有的路由都具有Internet团体
No_Advertise(0xFFFFFF02)
收到具有此属性的路由后,将不向任何BGP对等体发送该路由,只能自己使用
No_Export (0xFFFFFF01)
收到具有此属性的路由后,不会发送给EBGP对等体,但可以发送给联邦EBGP对等体
No_Export_Subconfed(0xFFFFFF03)
收到具有此属性的路由后,不会发布给EBGP对等体,也不会发布给联邦EBGP对等体
携带多个按照最苛刻的计算
自定义团体属性
AA:NN形式
拓展团体属性
MP-BGP控制VPNv4路由的导入和导出
配置
[AR1-bgp]peer XXX advertise-community //将团体属性发布给对等体,默认不发布 [AR1-route-policy]apply community no-export additive //一条路由可以携带多个团体属性,只能采用additive追加方式)
聚合者(Aggregator)
Aggregator属性用于标记路由聚合行为发生在哪个AS及哪台BGP路由器上
可选非传递 (Optional non-transitive)
特点
BGP设备不识别此类属性会忽略该属性,且不会通告给其他对等体。
分类
MED(Multi-Exit Discriminator,多出口鉴别器)
一种度量值,,即当进入本AS的入口有多个时,用于向外部对等体指出进入本AS的首选路径,MED属性值越小越优,默认0
传递规则
MED属性仅在相邻两个AS之间传递,默认情况,收到此属性的AS一方不会再将其通告给任何其他第三方AS(只给邻居,邻居只能自己用)
对于同一条路由,路由器只比较来自同一相邻AS的不同邻居的MED值,来自不同的相邻AS,则不进行MED值的比较
在IBGP邻居之间传递不改变此属性的值
MED和本地优先级区别
影响进入自治系统的数据流,而 本地优先级影响离开自治系统的数据流。
本地优先级仅在IBGP之间传播,MED属性可以在IBGP或者EBGP之间传播
MED的比较还与一些配置有关
deterministic-med
原理
路由选路时优先比较AS_Path最左边的AS号相同的路由的MED值,AS号不同时,MED无可比性
优点
默认选路的结果和路由的接收顺序是相关的,此配置消除选路的结果和路由接收顺序的相关性
compare-different-as-med
允许BGP比较来自不同AS的路由的MED属性值,默认只比较同一AS的MED值
默认都是关闭,只比较来自同一AS的MED
配置
修改默认值:default med 999
只对import-route引入和聚合路由生效
med直接在策略中修改的是cost,注意MED修改后影响的范围,有时候可以间接影响其它路由的选路
起源ID(Originator_ID)
作用
防止客户端的环路
Originator ID由RR产生,使用的Router ID的值标识路由的始发者,用于防止集群内产生路由环路
簇列表(Cluster_List)
作用
防止RR间的环路
为了防止集群间产生路由环路,路由反射器使用Cluster_List属性,记录路由经过的所有集群的Cluster ID
华为私有属性
Preferred-value 属性
华为私有BGP属性,可以理解为路由的“权重”
只在本地有效,所以只影响本设备的路由优选该,不会传递给任何BGP对等体(不会存在update报文中),值越大越优,默认0
配置
peer x.x.x.x preferred-value 9
修改从指定邻居接收到路由的PV值,只在本地修改有效
两个属性过滤器
AS_Path过滤器
ip as-path-filter
使用正则表达式
团体属性过滤器
ip community-filter
BGP路由反射器
背景
IBGP水平分割导致BGP路由在AS内部只能传递一跳
解决办法
全互连
路由器需维护大量的TCP及BGP连接
AS内BGP网络的可扩展性较差。
路由反射器
允许将IBGP学习到的路由转发给特定的IBGP对等体,减少互联关系,减少IBGP对等体建立的配置
联盟
反射器角色
RR(Route Reflector):路由反射器
Client:RR客户端
Non-Client:非客户端
Originator(始发者):在AS内部始发路由的设备
Cluster(集群):路由反射器及其客户机的集合
反射规则
IBGP学到的路由
如果路由是从非client的IBGP邻居学来的,则RR只将它反射给所有client
如果路由是从client学来的,则RR会将它反射给所有的非client和client(除了发起该路由的client)
EBGP学到的路由
如果路由是从EBGP邻居学来的,RR会将它反射给所有的非client和client
非非不传 路由反射时,只将自己使用的、最优的BGP路由进行反射
RR的路由防环
原因
路由反射打破了IBGP的水平分割原则
分类
Originator_ID属性
原理
Originator_ID由第一个RR创建,Originator_ID填充路由始发者的Router-ID,并且不被后续的RR修改,当收到的Originator_ID和本地的Router-ID相同,丢弃此路由更新
场景
Cluster_List属性
反射簇(集群)
由RR及其Client组成
一个AS内允许存在多个路由反射簇
每一个簇都有唯一的簇ID(Cluster_ID,缺省时为RR的BGP Router ID )
原理
路由反射后,RR将该簇的Cluster_ID添加到路由的Cluster_list属性中,每经过一个RR都会检查Cluster_List,如果RR收到一条包含该簇的Cluster_ID,丢弃此路由更新,不包含添加新的Cluster_ID,继续发送此路由更新
场景
备份路由反射器
同一个集群有多个RR,但是这些RR必须配置相同的Cluster ID,否则可能产生环路
多集群路由反射器
同级路由反射器(骨干网-扁平化)
一个AS内各集群的RR互为非客户机关系,并建立IBGP全互联,此时所有RR和客户机都能收到全部路由信息。(部分全互连)
分级路由反射器(分层设计)
将较低网络层次的RR配置成高层次RR的Client
配置
基本配置
配置路由反射器及其客户端
peer x.x.x.x reflect-client
配置路由反射器的集群ID
reflector cluster-id x.x.x.x
默认使用自己的Router-ID作为集群ID
reflect change-path-attribute
路由反射器可以通过出口策略修改BGP路由的路径属性
默认不可以
reflect between-clients
允许客户端之间直接反射路由
默认开启,有减少链路开销的功能
BGP联盟
原理
联盟将一个AS划分为若干个子AS。每个子AS内部建立IBGP全连接关系,子AS之间建立联盟EBGP连接关系,但联盟外部AS仍认为联盟是一个AS
原AS号将作为每个路由器的联盟ID,联盟ID外的AS并不能感知到联盟的存在。在联盟范围内,子AS号被添加到AS_Path属性的括号中( ),联盟聚合路由时的无序AS使用中括号[ ],联盟相关的属性在传出联盟时会自动被删除
防环机制
和AS_Path一样
As_Confed_Set
联盟中AS号的无序集合
联盟聚合路由时的as-set
As_Confed_Sequence
联盟中AS号的有序集合
默认
配置
bgp 64512(子AS号) confederation id 100(大AS号也叫联盟ID) confederation peer-as 64513 64514 //指定需要建立对等体的子AS peer x.x.x.x as-number 子AS号/联盟ID外的AS
RR和联盟的区别
防环方式
IBGP
水平分割
EBGP
AS-path
RR
originator ID
cluster list
BGP路由引入到IGP中,默认只引入EBGP的路由
汇总路由指向null0
BGP邻居关系正常,没有路由的原因
没有产生路由
下一跳不可达
EBGP收到含本地AS号的路由
过滤
路由衰减
开启同步
水平分割
originator ID
cluster list
active-route-advertise
BGP路由11个优选规则
前提:丢弃下一跳不可达的路由
*
1、优选Preferred-Value属性值最大的路由
PreVal
2、优选Local_Preference属性值最大的路由
Local_Pref
↑ 越大越优
3、本地始发的BGP路由优于从其他对等体学习到的路由 本地始发(手动聚合 > 自动聚合 > network > import)> 从对等体学到的
route type
4、优选AS_Path短的路由
AS-Path
5、优选Origin属性最优的路由(IGP > EGP > Incomplete)
Origin
6、优选MED属性值最小的路由
MED
7、优选从EBGP对等体学来的路由(EBGP(20) > IBGP(200)>LocalCross > RemoteCross
peer type
8、优选到Next_Hop的IGP度量值最小的路由,不比路由优先级
IGP cost
前8条都相同的路由可以负载分担(ECMP)
默认只会对AS_Path完全相同的路由进行负载分担 但是可以使用load-balancing as-path-ignore忽略AS_Path路径不一致
maximum load-balancing ibgp/ebgp 2 设置负载路由的最大条数,默认1条,最大8条。只会和最优路由类型相同的路由负载
都是聚合或者都不是聚合路由
优选Cluster_List最短的路由
Cluster List
优选Router ID(Orginator_ID)最小的设备通告的路由
Router ID
优选具有最小IP地址的对等体通告的路由
peer addres
↓ 越小越优
简记:PL LAO MEN E CRI(上大下小) dis bg rou x.x.x.x //查看路由不被优选的原因,优选的路由带有best, select, active关键字
BGP EVPN基础
子主题
子主题
子主题