BGP笔记
产生背景
BGP定义:是用于自治系统间的动态路由协议,属于外部网关协议。
自治系统(AS):由统一管理、运行同一IGP协议的路由器组成,通常使用相同路由策略。
AS编号:分为2字节和4字节。2字节取值0-65535,其中公有AS为1-64511,私有AS为64512-65535;4字节公有AS为65536–4199999999,私有AS为4200000000–4294967294。
路由协议的分类
IGP:包括RIP、OSPF、IS-IS。
EGP:即BGP。
BGP协议特性
负责将路由从一个AS传到另一个AS,AS内部路由扩散依靠IGP。
是路径矢量协议,一跳为一个自治系统,路由在AS间传递时下一跳变化,在AS内部传递时下一跳不变。
有AS防环机制,通过AS_PATH属性,记录路由经过的AS编号,若包含本AS编号则不学习。
基于TCP协议传输,端口号179,需手动配置邻居。
第一次网络收敛发送完整路由表,后续发送增量更新。
有多种属性可控制路由选择。
支持路由聚合。
可进行路由过滤和路由策略配置。
BGP基本术语
BGP Speaker:运行BGP协议的路由器。
BGP Peer:相互有TCP连接、交换路由信息的BGP Speaker。
BGP对等体分类:
EBGP对等体:跨AS的邻居,一般物理直连,从其获得的路由会向所有对等体通告。
IBGP对等体:同一AS内部的邻居。
邻居也可非直连。
BGP规划问题(路由黑洞)
产生原因:IBGP邻居间存在未运行BGP协议的路由器,无法获得BGP路由,导致数据包被丢弃。
解决方法:BGP引入IGP;在黑洞路由器上配置静态路由;IBGP全连接(存在防环机制及配置工作量大问题);使用BGP路由反射器;采用BGP联盟。
BGP环路问题(水平分割)
EBGP水平分割:通过AS_PATH属性防环,学习到的路由含本地AS号则拒绝学习。
IBGP水平分割:从一个IBGP对等体学习的路由,不会通告给其他IBGP对等体。
BGP消息种类
头部信息:包括标记(解决协议兼容性)、长度(指示报文长度)、类型(指示报文类型)。
数据包种类:
Open:建立对等体连接,携带route-id等,含保持时间等参数。
Keepalive:周期性发送以保持连接有效性,默认周期60秒,超时180秒。
Update:携带路由更新信息,包括撤销和新增路由等。
Notification:检测到错误时发送,之后关闭连接。
Router-refresh:改变路由策略后,要求对等体重发指定地址族完整路由表,仅支持该能力的路由器响应。
BGP状态机
包括Idle(空闲,初始化准备连接)、Connect(TCP连接中)、Active(主动尝试连接)、OpenSent(发送Open报文等待对方回应)、OpenConfirm(收到Open报文,发送Keepalive等待回应)、Established(收到Keepalive,建立邻居)。
BGP邻居建立条件
IBGP:物理口建邻建议用直连接口地址;环回口建邻需对方IP可达,更新源与指定邻居地址一致,无需直连。
EBGP:物理口建邻建议用直连接口地址;环回口建邻需IP可达,可修改最大跳数,更新源与指定邻居地址一致,默认IBGP邻居间TTL为255,EBGP为1,环回建立EBGP邻居需修改TTL。
同时有EBGP和IBGP邻居时,需对IBGP邻居修改下一跳为本机。
BGP路由选路原则(13条)
丢弃下一跳不可达的路由。
优选Preferred-value值最大的路由(默认为0,0~65535,华为、H3C私有属性)。
优选本地优先级(LOCAL_PREF)最高的路由。
依次选择network命令生成、import-route命令引入、聚合的路由。
优选AS路径(AS_PATH)最短的路由。
依次选择ORIGIN属性为IGP、EGP、Incomplete的路由。
优选MED值最低的路由。
依次选择从EBGP、联盟EBGP、联盟IBGP、IBGP学来的路由。
优选下一跳度量值(IGP到达下一跳的度量)最低的路由。
优选CLUSTER_LIST长度最短的路由。
优选ORIGINATOR_ID最小的路由。
优选Router ID最小的路由器发布的路由。
优选IP地址最小的对等体发布的路由。
BGP负载分担时的选路
背景:BGP默认选唯一最优路由,可通过配置命令或路由策略修改属性实现负载分担,如
maximum load-balancing 2
允许最多2条等价路径。与IGP的区别:
IGP通过自身算法,对度量值相等的路由负载分担。
BGP无路由计算算法,基于选路规则有条件地实现负载分担。
BGP路由的发布策略
只发布最优路由(IP路由表或BGP路由表中的最优路由,依配置而定)。
只发布自己使用的最优路由。
从EBGP获得的路由向所有BGP对等体发布。
从IBGP获得的路由不向IBGP对等体发布(IBGP水平分割),但发布给EBGP对等体。
建立连接后,向新对等体发布符合条件的所有路由,后续仅在路由变化时更新。
BGP属性(控制选路的方法)
1. 公认属性(所有路由器必须识别)
公认必遵属性(路由必须携带):
AS_PATH:记录路由经过的AS编号,用于防环,路径短的路由优先;在路由传出AS时增加AS编号,修改时建议增加真实AS编号。
next-hop:下一跳地址,向EBGP邻居发布时变更为自身地址,向IBGP邻居发布时不变,可配置命令更改IBGP邻居路由的下一跳为本机。
ORIGIN:描述路由来源,取值为IGP(network宣告,显示i)、EGP(引入EGP,显示e)、Incomplete(引入IGP/静态/直连,显示?),优选顺序为IGP>EGP>Incomplete。
公认可选属性(非必须携带):
local-perference:本地优先级,仅在IBGP邻居间传递,默认值100,值大的路由优先,用于AS内选择离开本AS的最佳路由。
Atomic-aggregate:自动聚合相关属性,BGP支持自动和手动聚合。
2. 可选属性
可选传递属性(不识别但会传递):
aggregator:手动聚合相关属性。
community:团体属性。
可选非传递属性(不识别且不传递):
clustor_list:集群列表。
originator_id:集群ID。
MED:多出口鉴别器,用于判断流量进入AS的最优路径,仅在相邻AS间传递,默认值0(network路由)或原IGP cost(引入路由),值小的优先。
3. preferred-value
首选项,华为、H3C私有属性,默认0,取值0~65535,值大的路由优先。
属性控制的选择建议
影响下游所有路由器:用AS-PATH。
影响本AS内部某个路由器:用Local-preference。
影响下游某一个AS的路由器:用MED。
影响某一台路由器:用preferred-value。
属性控制方法
通过路由策略实现,对匹配的路由用Apply子句修改属性,在邻居的传入/传出方向调用,空节点允许其他路由正常放行;也可在宣告或引入路由时调用策略。
BGP对等体组、聚合、路由反射器、联盟团体属性
大规模BGP网络的问题
BGP对等体众多,配置和维护难度大。
BGP路由表庞大,对设备性能要求高。
IBGP全连接导致邻居数量过多,管理复杂。
路由变化频繁,引发路由更新频繁。
解决大规模BGP网络问题的方案
1. BGP对等体组
定义:由具有相同属性的对等体组成的集合,可简化配置。
分类:
IBGP对等体组:同一AS内的对等体组成,配置时需指定对等体、连接接口等。
EBGP对等体组:跨AS的对等体组成,因EBGP邻居可能分布在多个AS,配置较繁琐,一般不常用。
配置示例:通过
group
命令创建对等体组,将对等体加入组中,并配置相关属性。
2. BGP路由聚合
作用:减小路由表规模。
类型:
自动聚合:仅对引入的IGP路由生效,汇总到主类,可能造成路由黑洞,华为设备默认关闭,配置命令为
summary automatic
,聚合后明细路由状态为S(被抑制)。手工聚合:可精确汇总,能在任何路由器上配置,命令为
aggregate 网络地址 子网掩码
;为避免明细路由通告形成环路,可使用detail-suppressed
抑制明细路由,还可通过as-set
让汇总路由继承明细路由属性,或通过suppress-policy
选择性抑制明细路由。
3. 路由反射器
定义:能将从IBGP邻居学习的路由反射给其他IBGP邻居的BGP路由器。
作用:替代IBGP全连接,减少邻居数量,解决路由黑洞问题。
角色:包括路由反射器(RR)、客户机(Client)、非客户机。
反射规则:
从非客户机接收的路由,仅反射给客户端。
从客户端接收的路由,反射给所有客户端和非客户端(路由始发者除外)。
从EBGP接收的路由,反射给所有客户端和非客户端。
防环机制:
Cluster-list:记录路由经过的反射器集群ID,若包含本机集群ID则丢弃路由,短列表优先。
Originator_ID:记录路由始发者的Router ID,若与本机Router ID相同则忽略路由,小值优先。
配置:在反射器上通过
peer 对等体地址 reflect-client
指定客户机,可配置reflector cluster-id
设置集群ID。
4. BGP联盟
定义:将一个自治系统划分为若干子自治系统,子系统内IBGP全连接,子系统间建立联盟内部EBGP连接,以解决IBGP连接激增问题。
注意点:子AS使用私有AS编号;其他AS仍与联盟AS建立EBGP邻居;跨子AS的EBGP邻居需更改下一跳为本机;实际应用较少。
配置:进入子AS,通过
confederation id
申明联盟大号,confederation peer-as
申明联盟同伴,配置邻居及相关属性。
5. BGP团体属性(Community)
定义:路由的标记,用于标记具有相同特征的路由集合。
表达格式:32位二进制,可表示为10进制或前16位为AS号、后16位自定值的格式。
公认属性:
Internet:默认属性,可通告给所有对等体。
No-advertise:无法发送给任何对等体。
No-export:可发给BGP对等体,但不能传出本AS,可发给联邦EBGP对等体。
No-export-subconfed:可发给BGP对等体,但不能传出本AS和联邦EBGP对等体。
配置:通过ACL抓取流量,在路由策略中用
apply community
打标记,调用路由策略并开启advertise-community
使属性传递。
6. BGP路由衰减(Route Dampening)
作用:解决路由振荡问题。
原理:路由每振荡一次增加惩罚值(默认1000),超过抑制阈值(默认2000)时路由被抑制;惩罚值每半衰期(默认15分钟)减半,低于重用阈值(默认750)时路由重新被通告,最大惩罚值上限为1001-20000。
配置:使用
dampening
命令启用,可自定义参数(半衰期、重用阈值、抑制阈值、最大惩罚上限)。